Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Как уже было сказано, в Drivers кладутся нужные драйверы. AutoIt3.exe – это интерпретатор скрипта Drivers.au3:
# cat /heap2/unattended-win/uawsp2/$OEM$/Drivers.au3
ProcessSetPriority("setup.exe",0)
Run(@ScriptDir & "WatchDriverSigningPolicy.exe")
ProcessWait("WatchDriverSigningPolicy.exe")
RunWait(@ScriptDir & "SetupCopyOEMInf.exe Drivers")
ProcessClose("WatchDriverSigningPolicy.exe")
ProcessSetPriority("setup.exe",2)
А SetupCopyOEMInf.exe и WatchDriverSigningPolicy.exe – это простенькие программки, первая из которых выполняет соответствующий системный вызов [14], а вторая избавляет от диалога с вопросом о доверии поставщику в случае нахождения неподписанных драйверов.
Для запуска указанных программ используется следующая последовательность строк, записываемых в WINNT.SIF в секции [GuiUnattended]:
DetachedProgram="%windir%system32cmd.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 Autoit3.exe Drivers.au3)))"
Этот набор символов, который можно детально разобрать с помощью [15], приводит к запуску скрипта Drivers.au3 в фазе T-39 [3] процесса установки. После чего все драйверы с установочного диска регистрируются в базе драйверов и далее участвуют в установке. Именно «участвуют»! То есть и этот метод не приводит к гарантируемой установке конкурентных драйверов. Иначе говоря, установка идет все также на основании информации из INF-файлов. Единственное преимущество в том, что драйверы размещаются на CD в произвольной структуре директорий и в процессе установки не копируются на диск вовсе.
Не стоит забывать, что хотя все драйверы регистрируются в системной базе, но те, что не подключаются в процессе установки, остаются на дистрибутивном диске. И именно там система далее ожидает их найти. То есть для VMWare таким местом будет «D:$OEM$Drivers...». Значит, если далее предполагается проблемный драйвер установить вручную, то потребуется или оставить дистрибутивный диск в лотке дисковода, или позаботиться об обязательном подключении компьютера к сети. Поэтому предлагается композитный вариант, описанный далее.
Практические выводы
Как уже было сказано выше, с проблемой специальных драйверов приходится сталкиваться лишь только оборудование выйдет за стандартную Intel-архитектуру простеньких компьютеров общего применения. Можно подготовиться заранее, а можно принять меры сразу же после получения нового оборудования.
Первым делом надо взять диск с драйверами, поставляемый с оборудованием, и найти там драйверы дисковых устройств и контроллеров. Их следует устанавливать методом, описанным в разделе «Добавляем драйверы устройств загрузки». Все файлы *.sys копируются в $OEM$, и, пользуясь информацией из соответствующих *.inf, вносятся модификации в TXTSETUP.SIF. Здесь еще одна подсказка. Все, кто внимательно читал, должны были уже догадаться, что установщик ОС считывает файл TXTSETUP.SIF целиком и анализирует его. Другими словами, нет необходимости выискивать в этом полумегабайтном файле требуемые секции и добавлять в них строчки, как предлагается в [6, 7]. Достаточно просто дописать к файлу новые секции с нужными ключами. Система сама во всем разберется и соединит все одноименные секции в одну. Драйверы остальных периферийных устройств, видеоадаптеры, сетевые карты, модемы и прочее копируются вместе со всеми сопутствующими файлами внутрь директории с любым мнемоническим именем, располагаемой в $OEM$Drivers так, как описано в разделе «Добавление драйверов устройств через DetachedProgram». И соответственно модифицируется WINNT.SIF для запуска установочного скрипта Drivers.au3, который также вместе со всеми прилагаемыми программами помещается в $OEM$.