Данная статья описывает самостоятельное создание пакетов драйверов, для автоматической установки вместе с операционной системой. Руководство рассчитано на применение совместно с официальным интегратором пакетов от Bashrat the Sneaky DriverPacks BASE (доступен для загрузки по этой ссылке) или с аддоном «Интеграция драйверов» от Boa Soft (последняя версия доступна по этой ссылке).
Первая редакция статьи представляла собой точный перевод руководства, которое написал Bashrat the Sneaky. Сообщение на форуме, послужившее основой вышеупомянутого руководства и его обсуждение доступны по адресу: http://forum.driverpacks.net/viewtopic.php?pid=5 (EN). Вашему вниманию предлагается вторая редакция статьи. В ней Артем Васьков, изначально выполнивший перевод руководства, делится уже собственным опытом создания пакетов драйверов. Тем не менее, руководство является частью данной статьи.
Введение
Использование пакетов драйверов является наиболее удобным и универсальным способом автоматической установки драйверов, вместе с операционной системой. Однако, «официальные» пакеты Bashrat the Sneaky и его команды не могут охватить всего многообразия компьютерного оборудования. Основными причинами самостоятельного создания пакета драйверов может служить следующее:
Для Вашей специфической железки еще никто не сделал пакета драйверов (хотя в этом случае я бы все-таки рекомендовал внимательно ознакомиться с этой темой).
У Вас в наличии более свежая версия драйвера, чем в существующих пакетах (о сложностях использования неподписанных драйверов читайте ниже.)
Тогда данное руководство для Вас!
Как Вы сможете убедиться далее, собственно подготовка пакета драйверов не представляет из себя ничего сложного. Основные сложности сосредоточены в интеграции драйверов в дистрибутив операционной системы. Однако, почти всю рутинную работу по интеграции проделает за Вас интегратор DriverPacks BASE или аддон «Интеграция драйверов».
Примечание. Данный способ действителен только для драйверов, которые не требуют чего-то специфичного. Другими словами, все, что требуется для установки таких драйверов – это скопировать их на системный раздел и добавить необходимые значения в файл winnt.sif или реестр.
1. Загрузка драйверов
Для начала Вам нужно обзавестись необходимыми драйверами. Начните с сайта производителя Вашего оборудования. Если искомый драйвер там не обнаружен, попытайтесь отыскать его при помощи поисковой системы (например, Google).
2. Распаковка драйверов
Теперь мы должны извлечь драйверы из инсталлятора или архива. Лично я предпочитаю 7-zip, но Вы можете использовать любой (ну или почти любой) архиватор, способный это сделать. Правой кнопкой мыши щелкните по архиву с драйверами или по файлу программы установки и выберите пункт меню Распаковать (Extract files...), или что-то подобное. Выберите папку для распаковки и разархивируйте файлы.
Следующий раздел может испугать некоторых начинающих пользователей, однако в конце все будет подробно разъяснено. Вместо того, чтобы использовать все файлы, которые мы распаковали, мы должны выбрать только необходимые файлы, или другими словами убрать мусор. Как же это сделать? В 95% случаев работает следующий способ: откройте INF-файл Вашего драйвера, найдите секцию [SourceDisksFiles] и убедитесь в том, что Вы сохранили все файлы, перечисленные в ней!
Примечание. Для того чтобы сохранить сведения о цифровой подписи, не удаляйте сопутствующие CAT-файлы! CAT-файлы могут отсутствовать, если драйвер не имеет цифровой подписи.
Примечание. Редактирование inf-файла делает цифровую подпись недействительной. Поэтому если вы каким-либо образом изменили содержимое INF-файла из него можно удалить строку CatalogFile=имя_файла_цифровой_подписи.cat, а также одноименный CAT-файл из каталога с драйвером.
3. Создание пакета драйверов.
Это очень просто! Создайте папку D и поместите ваши драйверы в любую подпапку внутри ее. Имя подпапки может быть любым, но я рекомендую использовать для этих подпапок максимально короткие имена. В противном случае значение параметра OemPnPDriversPath в файле может оказаться слишком длинным (максимум 4096 знаков, а для установки при помощи winnt.exe/winnt32.exe только 1024 знака) и помешать успешной установке. После создания необходимой структуры папок поместите ваши драйверы в соответствующие подпапки (распакованные файлы, INF-файлы, но не архивы или программы установки, помните?).
Например, создайте следующую структуру:
Пример с реальными названиями
Примечание. Ранее папка D\3\ для неофициальных (создаваемых самостоятельно) пакетов драйверов не являлось обязательным условием. При использовании интегратора от Bashrat версии 6.05 и выше данное требование является обязательным для обеспечения функциональности KTD с неофициальными пакетами драйверов. Для аддона «Интеграция драйверов» это условие необязательно.
При создании структуры папок пакета драйверов следует придерживаться следующих соглашений.
Название папки | Содержимое |
Английское название | Пояснение |
A | Additions | Дополнения |
B | Broadband | Широкополосные сетевые устройства (*DSL-модемы и им подобные) |
C | Chipset | Наборы системной логики (чипсеты) |
CPU | Central Processor Unit | Центральный процессор (необходимо для AMD K8) |
D | Dial-Up | Модемы |
G | Graphics | Видеоадаптеры (графические карты) |
L | LAN | Сетевые адаптеры |
M | Mass Storage | Контроллеры жестких дисков |
P | Printers | Принтеры |
S | Sound | Звуковые адаптеры |
VMWare | VMWare | Драйверы для виртуальной машины VMWare |
W | WLAN | Беспроводные адаптеры |
U | USB | USB-устройства (флэшки, фотокамеры) |
X | Misc | Разное (все, что не попало в остальные разделы) |
Y | Monitor | Мониторы |
Z | HID | Устройства ввода (интеллектуальные мыши, клавиатуры, тачпады и т. п.) |
Жирным выделены названия, использующиеся в официальных пакетах. Безусловно, Вы должны использовать английские названия папок.
Далее в перечисленных выше папках драйверы разделяются по производителям. Названия производителей также рекомендуется максимально сокращать. Например: NVidia – N, ATi – A и т. д.
Внутри папки с именем производителя разные драйверы, как правило, располагаются в папках 1-9.
Это почти все! Правой кнопкой мыши щелкните по папке с пакетом драйверов и выберите Добавить к архиву… (Add files to archive...). Выберите следующие параметры архивации:
- Имя архива: DP_НазваниеПакетаДрайверов_wnt5_x86-32_ВерсияПакетаДрайверов.7z, причем имя архива не должно содержать пробелов! Например, название пакета драйверов версии 6.08 для контроллеров жестких дисков будет таким: DP_MassStorage_wnt5_x86-32_608.7z
- Формат архива: 7z.
- Уровень сжатия: Ultra (для максимально сжатия, при желании Вы можете указать меньший уровень сжатия).
- Метод сжатия: LZMA (это значение по умолчанию, не изменяйте его).
- Размер словаря: 32 MB Это значение, установленное по умолчанию, требует 369 MB памяти, т. е. объем вашего ОЗУ + файл подкачки должны быть не менее 369 MB. Вы можете увеличить или уменьшить значение этого параметра. Увеличение данного параметра позволят достичь большей компрессии, но требует больше времени для создания архива. Я использую значение 64 MB, для которого требуется 673 MB памяти!
- Размер слова: 256.
Рисунок 1 - Создание архива
Можно также создать архив при помощи командной строки, а также включить данную команду в состав пакетного файла. Для этого необходима консольная версия архиватора 7-zip. Команда будет следующей:
7za a DP_Название_пакета_драйверов_wnt5_x86-32_RP.7Z D\* -m0=BCJ2 -m1=LZMA:d25:fb255 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 -mx
4. Использование неподписанных драйверов
Возможно, вы захотите использовать в своем пакете драйверы без цифровой подписи (в каталоге с драйвером нет CAT-файлов). Несмотря на то, что и в официальном интеграторе DriverPacks BASE и в аддоне «Интеграция драйверов» содержится утилита, блокирующая проверку цифровой подписи, проблема с неустановкой неподписанных драйверов решена лишь частично. При установке драйверов ОС Windows использует следующий приоритет (по убывающей):
Новый подписанный драйвер из пакета драйверов.
Старый подписанный из дистрибутива Windows.
Новый неподписанный драйвер из пакета драйверов.
Таким образом, мы видим, что если в дистрибутиве содержится более старый подписанный драйвер для конкретного устройства, чем пакете в драйверов, то будет установлен драйвер из дистрибутива, а файлы из пакета драйверов будут проигнорированы.
Поэтому рекомендуется максимально возможно использовать подписанные драйверы (именно такой подход и использует Bashrat the Sneaky, избегая бета-версий и используя несертифицированные драйверы только в случае отсутствия прямых аналогов).
Обходным путем решения проблемы является удаление старых драйверов из дистрибутива системы. Упрощенно говоря, большая часть драйверов содержится в файлах DRIVER.CAB и SP2.CAB, а сжатые INF-файлы находятся в директории I386. Поэтому необходимо распаковать данный файл удалить, ненужные драйверы и запаковать файл обратно, а также удалить соответствующие INF-файлы из папки I386 и ссылки на них. Хотя теоретически можно выполнить это вручную, на практике это весьма трудоемко и может грозить многочисленными ошибками при установке.
Автоматизировать эту операцию поможет скрипт RusUpdatePack от участника конференции OSZone.net Petya V4sechkin. Данный скрипт поддерживает использование аддонов для удаления ненужных компонентов из дистрибутива ОС. Уже созданы аддоны для удаления драйверов от видеокарт и сетевых адаптеров. По сути аддон «Удаление компонентов» представляет собой список удаляемых файлов. Дальнейшую работу по перепаковке дистрибутива и удалению ссылок на удаленные файлы автоматически проделывает скрипт.
Следует помнить, что если, например, удалить все встроенные драйверы модемов, в дальнейшем при установке нового модема к нему не будет фирменных драйверов, система не сможет его опознать даже в качестве стандартного модема. Поэтому следует удалять драйверы только для тех устройств, которые присутствуют в пакете драйверов. Ну и разумеется, не забывать использовать пакет драйверов после удаления встроенных драйверов.
5. Автоматическая установка дополнений (панелей управления и т. д.) к драйверам
Дополнениями являются различные программы от производителей оборудования или сторонних разработчиков, предоставляющие пользователям возможность дополнительной настройки оборудования и таким образом являются пользовательским расширением драйверов. При установке дополнений мы сталкиваемся с двумя проблемами:
Тихая установка.
Зависимость установки конкретной программы от типа установленного оборудования.
Если с решением первой проблемы нам поможет разобраться раздел Приложения, то вторую проблему рассмотрим подробнее здесь.
В официальных пакетах, а также при интеграции, рассчитанной на использование интегратора DriverPacks BASE, для установки дополнений служит программа DPFinisher.exe. За документацией к ней рекомендую обратиться на «сайт производителя» www.driverpacks.net.
В аддоне BoaSoft установкой обновлений занимается командный файл Panels.cmd. Рассмотрим его работу на примере:
REM Проверяем наличие инсталлятора контрольной панели
IF EXIST %C%\ATI\CCP\Setup.exe (
REM Проверяем наличие установленного драйвера
IF EXIST %DRV%\ati2mtag.sys (
REM Если оба условия верны пишем сообщение в лог и переходим к установке
ECHO. >> %LOG%
ECHO %DATE% %TIME% >> %LOG%
ECHO Old Ati driver found >> %LOG%
ECHO Install Ati control panel >> %LOG%
REM Запускаем установку панели управления с ключами тихой установки
START /WAIT %C%\ATI\CCP\Setup.exe -s -f1 %C%\ATI\CCP\shortcut.iss
)
)
REM Переходим к проверке наличия следующего драйвера и установке следующих панелей
Таким образом, чтобы добавить собственные дополнения, необходимо внести в файл Panels.cmd секцию по образу и подобию вышеприведенной. Разумеется не забывайте изменять пути, имена файлов и ключи для тихой установки.
6. Использование пакета драйверов
Напоследок несколько слов об использовании Вашего пакета. Фактически этот абзац добавлен шутки ради. Все и так просто. Нужно поместить Ваш пакет драйверов в папку DriverPacks интегратора DriverPacks BASE (или в соответствующую папку аддона). После этого остается лишь запустить пакетный файл, выбрать метод интеграции драйверов и все! Не нужно больше вносить изменения в файлы winnt.sif и txtsetup.sif. Вообще больше ничего не нужно делать!