Каждый пользователь компьютера рано или поздно столкнется с вопросом
поиска, установки и удаления драйверов. Будет это вызвано покупкой
нового устройства, переустановкой операционной системы, желанием
повысить быстродействие или улучшить другие характеристики системы – не
суть важно. В этой статье я хочу предоставить некоторые теоретические
сведения о драйверах, а также обсудить некоторые тонкости и приемы в
обращении с ними.
Что это такое
зации, настройки параметров, обмена данными,
переключением из одного состояния в другое и т.п. Драйвер позволяет
операционной системе взаимодействовать с конкретным устройством через
общий интерфейс, не учитывающий особенности данного устройства. Другими
словами, драйвер транслирует запросы высокого уровня в запросы
низкоуровневого машинного языка, непосредственно обращаясь к аппаратным
ресурсам компьютера.
Не для каждого устройства требуется
драйвер. Если существует строгий стандарт, описывающий набор команд,
последовательность и временные параметры операций и другие особенности
работы с данным классом устройств, драйвер может и не понадобиться, так
как операционная система уже имеет в своем составе все необходимые для
этого процедуры. В принципе, это можно назвать и встроенным драйвером.
Примеры – клавиатура, таймер, коммуникационные порты, модем (внешний).
Но если устройство может быть заменено на другое, отличное по своим
функциональным возможностям, то драйвер для него нужно будет
устанавливать обязательно.
Драйвер может содержаться и в
дистрибутиве операционной системы. Тогда вопрос его поиска отпадает сам
по себе. Однако устройства, появившиеся после официального выхода ОС,
потребуют установки отдельного драйвера, разработанного производителем.
Кроме того, набор драйверов в комплекте с ОС невелик и охватывает
только небольшую часть наиболее распространенных или полностью
стандартных устройств.
Драйверы и windows
В операционных
системах microsoft windows драйвер состоит из нескольких файлов,
хранящихся обычно в каталогах system, system32 и их подкаталогах. Ядро
драйвера хранится в файлах с расширениями .vxd, .drv, .sys и некоторых
других, а дополнительные процедуры собраны в динамические библиотеки
.dll. Кроме того, в состав драйвера могут входить файлы справки,
утилиты, модули деинсталляции и т.д.
Последовательность операций
по установке и удалению драйвера хранится в специальном информационном
файле .inf. С его помощью windows определяет тип, производителя, модель
устройства, класс драйвера, необходимые ресурсы и файлы. В этом файле
также описываются операции распаковки, запуска, копирования, удаления,
переименования файлов, добавления и удаления ключей в реестре и т.д.
Все .inf-файлы хранятся в каталоге inf, причем устанавливаемые драйверы
не-microsoft’овского происхождения (не поставляемые в комплекте с ОС)
откладываются в отдельный подкаталог inf/other.
windows умеет
автоматически находить драйвер для устройства. Для этого она использует
технологию plug&play, точнее, ее часть, отвечающую за
самоидентификацию устройства. В частности, pci-устройства
обнаруживаются bios и заносятся в виде списка в специальную область
escd (extended system configuration data). windows может использовать
ее, а может и самостоятельно опросить шину pci и узнать у каждого
устройства коды его производителя, модели и версии, необходимые ресурсы
и другую информацию. Далее проверяется база данных (файлы drvdata.bin и
drvidx.bin) по всем известным устройствам и находится необходимый
.inf-файл. Если в каталоге .inf имеются новые файлы, они будут
автоматически проиндексированы и внесены в базу данных.
Следует
также помнить, что операционные системы windows 98 se и windows 2000,
равно как и их потомки, поддерживают новую модель драйверов, получившую
название wdm (windows driver model). Это – попытка реализовать полную
поддержку plug&play и acpi, то есть дать возможность загружать и
выгружать драйверы «на ходу», без перезагрузки системы, подключать их в
виде фильтров-расширений к стандартным драйверам microsoft, более гибко
управлять энергосбережением и конфигурацией устройств и т.п.
wdm-драйверы хранятся в каталоге system32/drivers. В частности,
интерфейсы нового поколения usb и ieee-1394 (firewire) работают только
под управлением wdm-драйверов.
«Референс» или «фирменные»?
Как
правило, функциональность каждого устройства компьютера определяется
его контроллерами. Контроллеры имеют вид интегральных микросхем,
установленных на печатной плате. Взаимодействие устройства с остальными
компонентами системы сводится к обмену данными и командами между
контроллером устройства и центральным процессором (или другим
контроллером, например, арбитром шины, контроллером dma и т.п.). Можно
сказать, что драйвер – это программа, позволяющая процессору «общаться»
с контроллером.
Очень часто разработчики микросхем (так
называемого чипсета) сами пишут драйверы для того устройства, которым
будет управлять их контроллер. Обычно такие драйверы называют
референсными ("reference”). Они могут быть либо общедоступными и
выкладываться в Интернет на сайте разработчика, либо предоставляться
исключительно производителям оборудования на доработку и адаптацию.
Очевидно, что в первом случае для устройства можно и нужно
устанавливать референсные драйверы, которые обновляются гораздо чаще
«фирменных» и содержат исправления ошибок и новые возможности. Однако
при этом можно потерять доступ к некоторым функциям, специфичным для
конкретного устройства.
«Фирменные» драйверы производителя
оборудования могут быть изрядно устаревшими, но при этом учитывать
какие-то особенности данного устройства, о которых не знают
разработчики чипсета. В любом случае всегда имеет смысл попробовать
сначала «референс»-драйвер (если он доступен для скачивания), а если он
по какой-то причине не подойдет, вернуться к «фирменным».
Версии драйверов
Как
и любое другое программное обеспечение, драйверы имеют свои версии.
Формат версии свободный – каждый разработчик сам решает, сколько ему
нужно цифр для нумерации и в какой последовательности они должны
стоять. В некоторых случаях все-таки есть система: windows-драйверы для
наиболее интересных снашей точки зрения устройств вроде игровых видео- и звуковых
карт, поддерживающих directx, нумеруются определенным образом. Первая
цифра – номер версии операционной системы windows. 4 = win9x/winnt, 5 =
win2000. Далее после точки идет версия directx. 12 = dx7, 13 = dx8.
Последние цифры – номер версии самого драйвера. Например, драйвер для
видеокарт nvidia имеет версию 4.13.01.1241, что означает предназначен
для win9x и directx8, его версия – 1241.
Чтобы узнать версию
драйвера, распакуйте его до состояния отдельных .vxd и .dll-файлов.
Далее нужно в «Проводнике» щелкнуть любой из файлов (лучше с
расширением .vxd) правой кнопкой мыши, выбрать «Свойства», потом
закладку «Версия». Версия драйвера будет выделена цветом.
Иногда
производители сопровождают драйвер своим инсталлятором (setup.exe,
install.exe и т.п.). Тогда увидеть файлы драйвера не представляется
возможным. Поищите файл readme.txt, version.txt, release.txt или
что-нибудь подобное, так как в них часто тоже указаны версии файлов или
всего комплекта.
Также стоит упомянуть о так называемых
бета-драйверах. Разработчики чипсетов и устройств часто стараются
стимулировать интерес к себе, выкладывая на своих сайтах
экспериментальные драйверы. Другой известный прием – предоставление
драйверов владельцам различных тематических Интернет-сайтов под видом
украденных или случайно оставленных на внутренних корпоративных
страницах (так называемые "leaked”-драйверы). Конечно, разработчики
заранее открещиваются от них и не обещают технической поддержки в
случае возникновения проблем, но, как мне кажется, они все равно
анализируют поток писем от пользователей и тем самым экономят на
процессе поиска сбоев и отладки.
Чтобы предотвратить сбои в
системе из-за бета-драйверов, microsoft ввела специальную сертификацию.
Драйверы тестируются в лаборатории microsoft windows hardware quality
lab (whql), и после успешного прохождения всех процедур они получают
сертификат. Он имеет вид файла типа "security catalog” (расширение
.cat), в котором перечислены все сертифицированные компоненты драйвера.
Если такого файла в комплекте драйвера нет, то очень велика
вероятность, что это бета-версия.
Кстати, проверяйте .cat-файлы, запуская их двойным щелчком мыши, так как они могут быть фиктивными (пустыми).
Как определить производителя и модель устройства
Конечно,
лучше покупать комплектующие известных производителей, благо сегодня
такая возможность есть. Тогда не будет возникать вопрос о том, какой
драйвер нужно искать. Но иногда пользователь не имеет понятия о модели
или даже производителе устройства – например, если компьютер не очень
новый и собирал его кто-то другой. Перед тем, как начинать поиск,
придется определить точное название устройства или его чипсета.
Все
чипы обязательно имеют маркировку, где указано название производителя,
модель, серия, версия и ревизия чипа, дата выпуска. Микросхемы чипсета
обычно имеют самое сложную структуру, у них большой корпус и много
контактов, поэтому они больше других чипов по размерам. По маркировке,
пользуясь поисковиками www.google.com www.altavista.com и другими,
можно достаточно быстро отыскать сайт производителя чипсета и
"reference”-драйверы.
Производителя самого устройства найти
будет легче. Во-первых, вся необходимая информация должна быть нанесена
краской на печатной плате. Даже если вы не нашли названия, есть шанс
определить его по fcc-номеру. Ищите строку "fcc id:”, в которой будет
указан регистрационный код, присвоенный изготовителю устройства. После
этого нужно зайти на сайт fcc и ввести код в строку поиска.
Во-вторых,
где-нибудь обязательно будет написана модель устройства, по которой в
Интернет можно попытаться найти сайт производителя.
В-третьих,
если устройство устанавливается в слот pci или agp, то с помощью утилит
можно определить код производителя этого устройства или чипсета. Могу
порекомендовать sandra, powerstrip. Принцип, положенный в основу
идентификации, базируется на анализе информации, выдаваемой
pci-устройством. Как минимум можно получить коды производителя (vendor
id) и модели (device id), которые поддаются расшифровке с помощью
таблиц. В частности, в таблице sandra содержится более 6 тыс. кодов
различных устройств.
Где взять драйвер
Конечно, можно не
напрягаться и установить все драйверы прямо с компакт-диска, идущего в
комплекте с устройством. Такое решение вполне оправданно, но только на
первое время. Драйверы (особенно для внутренних устройств) имеют
тенденцию часто обновляться, поэтому полезно иногда поискать в Интернет
новые версии. Иначе велика вероятность столкнуться с несовместимостью
устройства с новым программным обеспечением или другим комплектующими.
Если
вы точно знаете доменное имя сайта производителя (или догадываетесь –
www.производитель.com, www.производитель.com.tw), то можно начинать
поиск. На титульной странице отыщите кнопку "download”, "drivers”,
"support” или аналогичную. Далее предстоит выбрать из списка именно то
устройство, которое у вас имеется. Вполне возможно, что вы увидите
несколько устройств с совпадающими названиями, отличия которых будут
заключаться только в суффиксах или даже номерах ревизий. Обращайте на
это внимание, иначе драйвер может не подойти. Далее, по возможности
скачивайте драйверы не только для той операционной системы, которая у
вас установлена, но и для других ОС: во время инсталляции новой windows
будет неприятно обнаружить факт отсутствия необходимого драйвера.
Если
вам никак не удается найти нужный сайт, обращайтесь на
специализированные драйверные сайты www.windrivers.com,
www.driverhq.com, www.drv.ru . Скачивать оттуда непосредственно файлы
драйвера можно только в одном случае: фирма-разработчик уже прекратила
свое существование и ее сайта физически нет в Сети. Гораздо лучше
воспользоваться поиском не драйвера, а сайта производителя или его
страницы технической поддержки.
Как установить
Установка
драйвера заключается в следующем: windows обнаруживает .inf-файл,
отыскивает в нем строки идентификации plug&play-устройств, и если
они совпадают с информацией, выданной самим устройством, система
выполняет предписанные действия по копированию файлов, добавлению
записей в реестр и т.д. Вы должны указать местоположение файла в ответ
на запрос мастера обновления оборудования. Мастер запускается либо
автоматически, после появления сообщения о найденном устройстве, либо
вручную. В последнем случае зайдите в «Свойства системы» (нажать
я+pause), выбирайте закладку «Управление устройствами», потом свойства
нужного устройства, закладку «Драйвер», «Обновить драйвер».
Если
в комплекте с драйвером есть свой инсталлятор, то лучше воспользоваться
им. Для этого нужно после появления сообщения о найденном устройстве
нажать «esc», загрузить windows без драйвера и запустить инсталлятор.
Он скопирует все файлы драйвера в папку windowsinfother, где драйвер и
будет найден после перезагрузки. Кроме того, будут установлены
дополнительные программы, идущие в комплекте. Немаловажно также и то,
что в большинстве случаев инсталлятор может корректно убрать драйвер,
не оставив следов своего пребывания («Панель управления»/«Установка и
удаление программ»).
Как удалить вручную
Если установленный вами драйвер не справляется
со своими функциями и даже вызывает ошибки и сбои, его нужно удалить.
Просто нажать «del» в списке устройств, а потом дождаться сообщения о
новом устройстве?.. Иногда это помогает, иногда – нет. Дело в том, что
windows может следующий раз и не спросить у вас драйвер, а просто
проинформировать о найденном устройстве и тут же вернуть все на место.
Для удаления информации о драйвере потребуется дополнительно выйти в
dos, зайти в каталог windows/inf и найти там .inf-файл нужного (точнее,
уже ненужного) драйвера и удалить его. Вслед за ним можно отправить и
.vxd-файлы, которые обычно находятся в windows/system, но тут нужно
проявить аккуратность, так как можно и перестараться. Теперь после
перезагрузки windows обновит свою базу данных и не найдет старого
драйвера, а значит, можно устанавливать новый или возвращать на место
старый, хорошо работавший до того, как вы начали ремонтировать то, что
не сломалось.
|