Метод описанный Vadikan в статье
Установка драйверов с CD получил свое дальнейшее развитие, принцип работы несколько иной но в общем все очень похоже. Я не претендую на авторство, хотя и давно использовал устаноку драйверов на t-39, но мой метод был совсем простым и не такой совершенный как придумали
a06lp, idle.newbie, hp38guser, and Pyron.
Оригинальное описание
здесь
Установка производится в 3 шага.
- Переписываем файлы из архива simpledrv.zip (прикреплен к сообщению) в папку $OEM$\, туда же ложим файл 7za.exe из пакета 7-zip. Все в одном комплекте (вместе c 7za.exe) лежит здесь
Код:
7za.exe
Drivers.cmd
nircmd.exe
Process.exe
SetupCopyOEMInf.exe
WatchDriverSigningPolicy.exe
- Редактируем winnt.sif.
Если вы хотите видеть консоль с отработкой командного (cmd) файла, то добавляем эти строчки (при этом консольное окно в процессе установки запускается свернутым левом углу):
Код:
[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I$OEM$) DO (IF EXIST %J (start /min /D%J Drivers.cmd)))"
Ежели не желает его видеть, то добавляем
Код:
[GuiUnattended]
DetachedProgram=".\system32\cmd.exe"
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I$OEM$) DO (IF EXIST %J (start /min /D%J NirCmd.exe exec hide Drivers.cmd)))"
- Добавляем драйвера по своему вкусу в папку $OEM$\Drivers. При установке драйвера на жесткий диск не копируются, ставятся прямо с CD. Для экономии места, можно использовать упакованные драйвера. (экономия получается серьезаная, в моем случае архив с дровами занимает почти в 5 раз меньше места, но в этом случае драйвера из архива сначала распаковываются на HDD - см. пункт 4)
- Если вы хотите использовать упакованные драйвера, для экономии места, запаковываем их с помощью 7z (используется 7-zip версии 4.23, можно использовать и любой другой, но тогда не забываем изменить в файле Drivers.cmd команду и ключи на распаковку) - называем файл Drivers.7z и переписываем в папку $OEM$\. При установке они автоматически распакуются в %SystemDrive%\Drivers.
Не забываем при первом запуске или на t-12 (t-13), удалаять эту папку (если конечно не планируете дальше ее использовать).
Если упакованные драйвера не используются, файл 7za.exe из папки $OEM$\ можно удалить.
В результате у нас получается такая структура:
Код:
$OEM$\
...Drivers\
.......01_mb_intel\
.......01_mb_sis\
.......01_mb_via\
.......02_vid\
.......03_AUD\
.......04_LAN\
...7za.exe
...Drivers.7z - если используются запакованные драйвера
...Drivers.cmd
...nircmd.exe
...Process.exe
...SetupCopyOEMInf.exe
...WatchDriverSigningPolicy.exe
I386\
...winnt.sif
Это всё.
Небольшие замечания.
- Если вы используете мультибутовый диск (с неск. дистрами), то при добавлении дров в source-пути не должно быть пробелов, т.е.
CD:\XP Pro\$OEM$\Drivers\nVidia ForceWare 77.72\ <-- не будет работать. (Замените пробел в "XP Pro" на какой-нибудь символ)
CD:\XP-Pro_A\$OEM$\Drivers\nVidia ForceWare 77.72\ <-- будет работать
- Этот метод не работает для установки RAID, SATA и SCSI драйверов.
- Утилита WatchDriverSigningPolicy, иногда не срабатывает и появл. диалог о неподисанности драйвера.
Теперь о том как это все работает.
На стадии установки t-39 установщик windows запускает файл drivers.cmd, который:
- прежде всего останавливает процесс установки (используя утилиту Process.exe),
- затем запускает WatchDriverSigningPolicy.exe, которая позволяет устанавливать неподписанные драйверы.
- После этого определяется есть ли в рабочей папке ($OEM$\Drivers) файл Drivers.7z, если есть то распаковывается в %SystemDrive%\Drivers.
- Затем запускается утилита SetupCopyOEMInf.exe, которая сканирует все папки и подпапки в $OEM$\Drivers (или %systemdrive%\Drivers - если используется архивированные драйвера) и копирует все inf файлы в папку %windir%\Inf.
- Затем возобновляется процесс установки
От себя добавлю, что вы можете спокойно подправить файл Drivers.cmd, под свои нужды (поменять пути, названия файлов и т.д.) Если вы не хотите держать файлы Drivers.cmd, nircmd.exe, Process.exe, SetupCopyOEMInf.exe, WatchDriverSigningPolicy.exe в каталоге $OEM$ можно переместить их например в каталог $OEM$\Drv, в этом случае внутри этой папки нужно создать еще одну папку Drivers, в кот. будут лежать незапакованные драйвера и не забыть поменять путь до файла drivers.cmd в файле winnt.sif в строчке:
Arguments="/Q /C FOR /F %I IN (%SystemRoot%\SYSTEM32\$WINNT$.INF) DO (FOR %J IN (%I
$OEM$\Drv) DO (IF EXIST %J (start /min /D%J Drivers.cmd)))"