Автоматизируем установку драйверов в Windows::Журнал СА 11.2005
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6226
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6932
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4214
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3006
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3819
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6315
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3169
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7276
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10646
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12364
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9123
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5387
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4616
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3154
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Автоматизируем установку драйверов в Windows

Архив номеров / 2005 / Выпуск №11 (36) / Автоматизируем установку драйверов в Windows

Рубрика: Администрирование /  Автоматизация

АЛЕКСЕЙ БАРАБАНОВ

Автоматизируем  установку драйверов в Windows

Автоматизация установки MS Windows до предела сокращает вмешательство оператора. Можно сказать, что практически исключает. Но при встрече с нестандартным оборудованием преимущество оборачивается непреодолимой, на первый взгляд, преградой.

В серии статей на тему автоматизации работ в среде MS Windows, опубликованных в нашем журнале [1, 2, 3, 4], не затронуты вопросы автоматической установки драйверов. В большинстве случаев это не мешает работе, так как используемая операционная система славится тем, что имеет в своем дистрибутиве очень широкий набор драйверов. И традиционно каждый изготовитель нового устройства стремится, чтобы его драйвер был представлен в дистрибутиве MS Windows. А если попадается «несчастливое» устройство, которое там отсутствует, то драйвер можно поставить и после, хотя это и переведет установку из статуса автоматической в рукотворную. Но, увы, дело оборачивается полным крахом, если в качестве «незнакомого» для этой чудной ОС выступает устройство, на которое далее предполагается установка, то есть дисковый накопитель или его контроллер.

Далее всё будем рассматривать на примере созданного ранее, как указано в перечисленных выше статьях, дистрибутивного диска MS Windows XP Professional для автоматической установки, запускаемой в виртуальной машине VMWare. Но все сделанные выводы и рассмотренные приемы справедливы и для других архитектур. Например, для широко распространенных компьютеров на основе схемных решений для процессоров AMD.

Итак, в дистрибутиве MS Windows XP отсутствует драйвер контроллера BusLogic SCSI, и если в настройках VMWare выбрать в качестве дискового устройства SCSI-диск, то попытка поставить ОС в среде такой виртуальной машины завершится неудачей (рис. 1), так как именно контроллер BusLogic эмулируется в VMWare.

Рисунок 1. Не найдено ни одного дискового устройства

Рисунок 1. Не найдено ни одного дискового устройства

Иначе говоря, система не нашла, куда ставиться. Но есть штатный ход – в процессе установки подгрузить драйвера. Для этого надо «поймать» на экране установки предложение нажать как указание о применении незнакомого системе устройства и нажать нужную клавишу. Тогда система остановит процесс установки и «попросит» установить дискету с драйверами (рис. 2).

Рисунок 2. Запрос дискеты с драйверами

Рисунок 2. Запрос дискеты с драйверами

Увы, такой дискеты нет в дистрибутиве эмулятора, и использование SCSI-диска не рекомендовано для виртуальных машин MS Windows XP. Хотя, сам драйвер присутствует в составе VMWare Tools. Тогда подготовим дискету вручную. Сначала вставим чистый диск и сформатируем его:

# fdformat /dev/fd0

Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.

Formatting ... done

Verifying ... done

# mkdosfs /dev/fd0

mkdosfs 2.10 (22 Sep 2003)

Device mounted using subfs, please do not access it while creating filesystem

# umount /dev/fd0

# mkdosfs /dev/fd0

mkdosfs 2.10 (22 Sep 2003)

# mount /dev/fd0

Теперь примонтируем диск с VMWare Tools и скопируем в корень чистого диска файлы с драйверами:

# mount -t iso9660 -o ro,loop /usr/lib/vmware/isoimages/windows.iso /mnt

# cp -v /mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/* /media/floppy

`/mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/disk.tag" -> `/media/floppy/disk.tag"

`/mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/txtsetup.oem" -> `/media/floppy/txtsetup.oem"

`/mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/vmscsi.cat" -> `/media/floppy/vmscsi.cat"

`/mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/vmscsi.inf" -> `/media/floppy/vmscsi.inf"

`/mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k/vmscsi.sys" -> `/media/floppy/vmscsi.sys"

# umount /dev/fd0

Полученный диск можно использовать при установке MS Windows. Вставим его в привод в ответ на приглашение и нажмем «S», как требуется. Система прочтет содержимое диска и предложит подтвердить выбор (рис. 3) нажатием «Enter».

Рисунок 3. Выбор драйвера с дискеты

Рисунок 3. Выбор драйвера с дискеты

Далее система предложит добавить еще какие-нибудь устройства (рис. 4), на что в нашем случае ответим отказом опять же путем нажатия «Enter».

Рисунок 4. Запрос дополнительных драйверов

Рисунок 4. Запрос дополнительных драйверов

К сожалению, все перечисленные действия не приведут к успеху. Поскольку в использованном диске автоматической установки нет возможности указать иное устройство загрузки дистрибутивных файлов, чем CD-ROM и в ответ на запрос, где искать использованный драйвер vmscsi.sys (рис. 5), приходится или прекращать установку вообще, или, понадеявшись на «авось», пропускать копирование этого файла.

Рисунок 5. Vmscsi.sys не найден на источнике установки

Рисунок 5. Vmscsi.sys не найден на источнике установки

И так как теперь для работы второй фазы установки системы нужны еще и использованные драйвера SCSI, то неудачный финал предопределен (рис. 6).

Рисунок 6. «Голубая смерть»

Рисунок 6. «Голубая смерть»

Ничего не остается, как обратиться к источникам [5, 6, 7]. Здесь можно и закончить нашу историю, мол, читайте и воплощайте. Но, к сожалению, информация с [5] весьма скудна, с [6] противоречива и местами ошибочна, а с [7] откровенно наивна, как всякий дословный перевод технического источника. Хотя, безусловно, если нужно узнать и понять все, то и прочесть кроме этой статьи придется также все перечисленное.

Добавляем драйверы устройств загрузки

Итак, проблема заключена в том, что установщик ОС должен использовать драйвера применяемых дисковых устройств в процессе установки и далее. В данном случае все нужные файлы содержатся в /mnt/program files/VMware/VMware Tools/Drivers/scsi/win2k. Обычно драйвера поставляются в виде исполняемого бинарного файла с суффиксом sys, далее обязательно есть файл с описанием и суффиксом inf, и возможно еще некоторые файлы. Но все они должны быть упомянуты в строках inf-файла обычно в секции [SourceDiskFiles]. Иногда все это еще и сопровождается файлом с цифровой подписью – файл с суффиксом cat.

Точно следуя первой части рецепта с [8], внесем необходимые изменения в файл TXTSETUP.SIF. Нахождение этого файла и все сопутствующие проблемы сборки готового диска с ним уже обсуждались в [1,2,3,4] и здесь мы не будем еще раз это рассматривать. Вот модификация в формате, пригодном для автоматического патчирования:

# diff -Naur TXTSETUP.SIF.orig TXTSETUP.SIF

--- TXTSETUP.SIF.orig   2005-10-27 10:15:56.000000000 +0400

+++ TXTSETUP.SIF        2005-10-29 21:32:40.000000000 +0400

@@ -206,6 +206,9 @@

 isapnp.sys   = 1,,,,,,3_,4,1,,,1,4

+vmscsi.sys   = 1,,,,,,_x,4,1,,,1,4

+

+

 ksecdd.sys   = 100,,,,,,_5,4,0,0,,1,4

 mountmgr.sys = 100,,,,,,3_,4,0,0,,1,4

 mrxdav.sys   = 100,,,,,,,4,0,0

@@ -18836,6 +18839,8 @@

 *PNP0E02 = "pcmcia"

 *PNP0700 = "fdc"

+PCI\VEN_104B&DEV_1040 = "vmscsi"

+

 *PNP0300 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}

 *PNP0301 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}

 *PNP0302 = "i8042prt",{4D36E96B-E325-11CE-BFC1-08002BE10318}

@@ -19281,6 +19286,7 @@

 dac2w2k = dac2w2k.sys,4

+vmscsi = vmscsi.sys,4

 [BootBusExtenders.Load]

@@ -21639,6 +21645,7 @@

 perc2    = "Dell PERC 2|3 RAID-БЮЮ"

 perc2gat = "Dell PERC 2/3 RAID-БЮЮ (Gatling)"

+vmscsi   = "VMware SCSI Controller"

 [BootBusExtenders]

 pci      = "└Ю═╘╒╔Ю Х╗╜К PCI",files.pci,pci

Здесь добавления вносятся в три секции файла TXTSETUP.SIF.

Во-первых, в секции [SourceDisksFiles] описываем файл (или файлы, если их много), который оригинально размещается в директории i386 дистрибутивного диска. Но, как видите, формат строки немного отличается от предложенного в [8]. Полностью все опции управления описаны в [9]. И здесь обнаруживается лишнее действие – сжатие файла утилитой makecab.exe. Поскольку у нас вся сборка производится в среде GNU Linux, то ради экономии полутора десятков килобайт не будем портить чистоту среды и запускать MS Windows, только чтобы воспользоваться отсутствующей в Linux утилитой makecab. И всего-то, что придется сделать – поменять «3_» в строке описания на «_x». Получилось vmscsi.sys = 1,,,,,,_x,4,1,,,1,4. Число пробелов вокруг знака «=» не принципиально, а вот число запятых – очень даже. Вообще, похоже на колдовское заклинание. Главное, не сбиться ни в одном знаке, а то вместо «грозы» выйдет «коза», а может, что и похуже. Но смысл этой строки понятен. Здесь описываются файл с драйвером и его формат. Сам файл vmscsi.sys (или файлы, если их много) надо просто скопировать в неизменном виде в директорию i386 дистрибутивного диска и именно там будет его искать установщик.

Затем добавляем строку в секцию [HardwareIdsDatabase]. В этой секции описывается соответствие номеров устройств PCI и их драйверов. В нашем случае будет так PCIVEN_104B&DEV_1040 = «vmscsi». Т.е. указывается код производителя, код устройства и имя файла с драйвером. Как только установщик обнаруживает некое PCI-устройство, он ищет по этим кодам драйвер, ему соответствующий, и затем грузит его, как описано чуть выше. Значения этих констант можно взять из соответствующего этому драйверу файла INF.

Ну и наконец надо связать с этим драйвером некую строку комментария, что и делается путем добавления строки в секцию [SCSI]: vmscsi = «VMWare SCSI Controller». Содержание строки не имеет никакого принципиального значения для работы системы, но отсутствие ее вовсе недопустимо и приводит завершению установки из-за отсутствия параметра, описывающего драйвер.

Всего перечисленного должно быть достаточно по логике. Но только не в MS Windows. В этой чудной системе надо еще и специально указать в секции [SCSI.load] загрузку нужного драйвера vmscsi = vmscsi.sys,4 из указанного места в указанном формате, который далее будет связан с соответствующим ему PCI-устройством и описание которого будет взято из соответствующей строки... Уф! Вот теперь все: файл драйвера скопирован куда надо, файл указаний установщику «что делать», модифицирован как надо. Можно собирать диск и устанавливать систему. Сборка производится, как было описано в [1, 2, 3, 4]. После установки обнаруживаем, что драйвер благополучно загружен в систему (рис. 7).

Рисунок 7. Vmscsi.sys установлен в систему

Рисунок 7. Vmscsi.sys установлен в систему

Заметим, никаких дополнительных манипуляций с размещением таких файлов в директориях Drivers и подобное, что предлагается в [6, 7, 8], делать не надо. В этом вопросе указанные источники заблуждаются.

Точно таким же образом можно на этапе загрузки подключить и все остальные драйверы дисковых устройств. Если один и тот же драйвер используется для нескольких возможных PCI устройств, например viamraid, то надо для каждого набора PCI индексов записать отдельную строку в секции [HardwareIdsDatabase], например так:

PCIVEN_1106&DEV_3249 = "viamraid"

PCIVEN_1106&DEV_3149 = "viamraid"

PCIVEN_1106&DEV_3164 = "viamraid"

Если же производитель устройств с разными PCI-индексами сотворил драйвера с одинаковыми именами (фирма Intel очень такое любит), то ничего не мешает эти драйвера переименовать как угодно и соответственно изменить все аналогичные строки в TXTSETUP.SIF. Например, для драйвера BusLogic из VMWare Tools название файла можно поменять на vmscsi1.sys без какого-либо ущерба работоспособности.

Политика подключения драйверов должна быть максимально объемлющей. То есть можно включить в загрузку все возможные драйверы, какие найдутся в коллекции создателя загрузочного диска. Система сама выберет из этого списка те, что соответствуют реально присутствующим в компьютере устройствам.

Добавляем драйверы устройств через OemPnPDriversPatch

Как видно все на том же рис. 7 в виртуальном компьютере присутствует устройство, драйвер для которого не был найден, это устройство SVGA, вместо которого использован драйвер VGA общего назначения. И устройство, драйвер которого определен в нашем случае недостаточно верно, это драйвер сетевой карты. Использован присутствующий в MS Windows драйвер AMD PCNET, в то время как в VMWare есть собственный драйвер сетевой карты.

Все драйвера, которые предназначены для использования с виртуальным оборудованием VMWare, можно найти в примонтированном образе VMWare Tools, а именно в /mnt/program files/VMWare/VMWare Tools/Drivers. Драйвера, подходящие для использования с MS Windows XP, содержатся внутри поддиректорий win2k или winnt2k. Возьмем все, кроме уже использованного драйвера scsi, и скопируем в директорию дистрибутива $OEM$/$1/Drivers/Very_looooong_filename. Такое имя выберем для того, чтобы доказать, что источники [6, 7] не правы, ограничивая имена внутри дистрибутивного диска правилом 8.3. В процессе установки содержимое дистрибутива, включая Drivers/Very_looooong_filename, будет перенесено на загрузочный диск. Для того чтобы использовать эти данные в настройке системы запишем (или раскомментируем) специальные строки в WINNT.SIF в секции [Unattended]:

OemPnPDriversPath="DriversVery_looooong_filename"

DriverSigningPolicy=Ignore

Первая строка укажет путь поиска файлов, а вторая позволит проигнорировать несоответствие подписей драйверов доверенным сертификатам, размещенным в дистрибутиве. В целевой директории должны собраться следующие файлы:

# ls -l /uawsp2/$OEM$/$1/Drivers/Very_looooong_filename

total 204

drwxr-xr-x  2 root root  4096 Oct 29 17:48 .

drwxr-xr-x  3 root root  4096 Oct 29 17:48 ..

-r--r--r--  1 root root  1929 Mar 23  2005 vmmemctl.inf

-r--r--r--  1 root root  5452 Mar 23  2005 vmmemctl.sys

-r--r--r--  1 root root  7890 Mar 23  2005 vmmouse.cat

-r--r--r--  1 root root  1312 Mar 23  2005 vmmouse.inf

-r--r--r--  1 root root  3904 Mar 23  2005 vmmouse.sys

-r--r--r--  1 root root  7900 Mar 23  2005 vmware-nic.cat

-r--r--r--  1 root root  3561 Mar 23  2005 vmware-nic.inf

-r--r--r--  1 root root 79584 Mar 23  2005 vmx_fb.dll

-r--r--r--  1 root root  2400 Mar 23  2005 vmx_mode.dll

-r--r--r--  1 root root  9044 Mar 23  2005 vmx_svga.cat

-r--r--r--  1 root root  2396 Mar 23  2005 vmx_svga.inf

-r--r--r--  1 root root 14912 Mar 23  2005 vmx_svga.sys

-r--r--r--  1 root root  7860 Mar 23  2005 vmxnet.cat

-r--r--r--  1 root root  3567 Mar 23  2005 vmxnet.inf

-r--r--r--  1 root root 22528 Mar 23  2005 vmxnet.sys

После установки наблюдаем следующую картину (рис. 8).

Рисунок 8. Устанавливаем дополнительные драйверы

Рисунок 8. Устанавливаем дополнительные драйверы

Автоматически были установлены драйверы SCSI, SVGA (и теперь экран настроен в разрешение 800х600), специальный драйвер сетевой карты, то есть так как задано в секции [Display] файла WINNT.SIF. Все перечисленные драйверы вместе со всеми необходимыми файлами были скопированы из директории C:DriversVery_looooong_filename внутрь установочной директории MS Windows XP, что видно на рис. 8 в окошке поиска. Здесь можно сделать вывод, что директорию с драйверами можно в конце установки удалять, так же как и директорию с дистрибутивами устанавливаемых программ в секции [GuiRunOnce]:

# grep -n rmdir WINNT.SIF

539:"%windir%system32cmd.exe /c rmdir %systemdrive%InstData /s /q"

540:"%windir%system32cmd.exe /c rmdir %systemdrive%Drivers /s /q"

А вот парочка драйверов vmmemctl.sys и vmmouse.sys так и не нашла себе применения. И поэтому осталась только в C:DriversVery_looooong_filename.

Еще одно интересное наблюдение было сделано в [10]. Установщик не ищет драйвера и их INF-файлы во вложенных директориях от указанной в OemPnPDriversPath, но если записать несколько путей через точку с запятой, то они будут обрабатываться в порядке сортировки имен. То есть если некоторые драйвера, например чипсета, требуется установить первыми, то директорию с ними надо назвать именем с использованием символов с меньшими номерами в кодировке.

В формате WINNT.SIF используется 8-битная кодировка. Для России это cp866. Хотя достаточно добавить цифровой префикс к имени директории с драйверами, поскольку порядок цифр в всех кодировках совпадает. По мнению авторов [10], логика работы системы такова: так как драйвера чипсета необходимы для работы многих других устройств, то установка в первую очередь зависимых устройств не произойдет должным образом, если еще не установлены драйвера основных.

Но проблема с неустановленными драйверами vmmemctl.sys и vmmouse.sys таким путем не решается. Так как эти драйвера проиграли конкуренцию в PnP тем, которых предпочел PnP-резолвер, использовавший информацию из INF-файлов. И эти драйвера приходится добавлять вручную через «Мастер обновления оборудования». Выбираем «Установку из указанного места» и режим «Не выполнять поиск. Я сам выберу нужный драйвер» (см. рис. 9).

Рисунок 9. Установка драйвера vmmouse

Рисунок 9. Установка драйвера vmmouse

Получается, что драйвер манипулятора мышь изVMWare не был установлен, но прошел этап регистрации. Иначе говоря, логика работы системы иная, чем это предполагают авторы [10]. Система регистрирует все драйвера. И как только после установки некоторых из них появится возможность установки зависимых, то это произойдет даже, если в последовательности сортировки имя директории с главными драйверами получило очередность после директории с зависимыми. Удивительно, что фантазия с цифровыми префиксами повторяется из рецепта в рецепт на [6] и [7].

Тем не менее метод регистрации всех драйверов заранее без учета их так называемой очередности был успешно реализован.

Добавляем драйверы устройств через DetachedProgram

Существует еще один способ подгрузить в автоматическом режиме драйверы в устанавливаемую систему. В секции [GuiUnattended] можно указать опцию DetachedProgram [11], в которой описать программу, запускаемую параллельно с выполнением основной программы setup.exe. Этот метод установки драйверов подробно описан в [12]. Там же приведена ссылка на архив необходимых программ [13]. Его надо загрузить и распаковать в директорию $OEM$ установочного диска. Все нужные драйверы и сопровождающие их файлы следует разместить внутри директории $OEM$Drivers. Причем внутри дерева вложенных директорий любой глубины. Можно выбирать любые мнемонические имена и группировать драйверы хоть по производителям, хоть по классу устройств.

Если для работы был использован диск, подготовленный в [1, 2, 3, 4], то должно получиться примерно следующее:

# ls -l /uawsp2/$OEM$

total 180

drwxr-xr-x  4 root root   4096 Mar 22  2005 $$

drwxr-xr-x  6 root root   4096 Oct 31 00:11 $1

drwxr-xr-x  5 root root   4096 Oct 30 22:21 .

drwxr-xr-x  5 root root   4096 Apr 21  2005 ..

-rw-r--r--  1 root root 118272 Dec 31  2002 AutoIt3.exe

-rw-r--r--  1 root root     27 Mar 28  2005 Cmdlines.txt

drwxr-xr-x  3 root root   4096 Oct 30 22:21 Drivers

-rw-r--r--  1 root root    264 Oct  5 22:51 Drivers.au3

-rw-r--r--  1 root root  20992 Dec 31  2002 SetupCopyOEMInf.exe

-rw-r--r--  1 root root   3584 Dec 31  2002 WatchDriverSigningPolicy.exe

-rw-r--r--  1 root root    113 Mar 28  2005 mkusers.cmd

Как уже было сказано, в 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$.

Узнать заранее, какие драйверы будут проигнорированы в процессе автоматической установки, невозможно, и поэтому на начальном этапе подготовку установочного диска можно было бы считать завершенной. Если после инсталляции ОС на жесткий диск компьютера выяснится, что некоторые особенно нужные драйверы не были установлены, то их следует далее устанавливать так, как описано в разделе «Добавление драйверов устройств через OemPnPDriversPatch», но при этом запретить удаление директории с драйверами из WINNT.SIF в секции [GuiRunOnce]. Тогда нужные драйверы зарегистрируются и далее можно будет их доставить прямо с жесткого диска компьютера в сеансе удаленного подключения к рабочему столу. И здесь снова подсказка. Поскольку есть категория устройств, которые подключаются динамически, – модемы, сканеры, принтеры, и драйвера таких устройств могут быть затребованы работающей системой в процессе эксплуатации, то их тоже следует разместить в неудаляемой директории $OEM$$1Drivers. Будучи зарегистрированными, эти драйверы установятся при первом использовании подключаемого устройства.

Таким образом, в каждой локальной сети должен находиться установочный диск, модифицированный согласно составу используемого оборудования. Ну а поскольку все работы по созданию такого диска выполнялись в среде GNU Linux, то после приобретения нового и неизвестного компьютера нужно лишь попросить установить диск с драйверами от него в локальный привод компьютера с GNU Linux, затем в сеансе удаленного подключения через SSH добавить новые драйвера в рабочую директорию для создания загрузочного CD и записать новую версию диска автоматической установки для этой локальной сети с учетом нового компьютера. Вот и все! Далее все операции автоматизированы, как описано в [3, 4]. И ваше удаленное администрирование станет безграничным настолько, что его можно будет осуществлять даже с пляжа Мондраго на острове Майорка через GPRS-роуминг с мобильного телефона с Nokia 6670. Правда, придется купить к телефону беспроводную клавиатуру, но... это уже детали!

Литература и ссылки:

  1. Барабанов А. Автоматизация MS Windows, или Autoit как мечта эникейщика. Часть 1. – Журнал «Системный администратор», №4, апрель 2005 г. – 11-15 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=04.2005;a=01).
  2. Барабанов А. Автоматизация MS Windows, или Autoit как мечта эникейщика. Часть 2. – Журнал «Системный администратор», №5, май 2005 г. – 54-58 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=05.2005;a=02).
  3. Барабанов А. Автоматизация MS Windows, или Autoit как мечта эникейщика. Часть 3. – Журнал «Системный администратор», №6, июнь 2005 г. – 25-31 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=06.2005;a=03).
  4. Барабанов А. Автоматизация MS Windows, или Autoit как мечта эникейщика. Часть 4. – Журнал «Системный администратор», №7, июль 2005 г. – 46-47 с (http://www.samag.ru/cgi-bin/go.pl?q=articles;n=07.2005;a=10).
  5. Оригинальная информация по созданию дисков автоматической установки MS Windows –http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/Default.asp?url=/Resources/Documentation/windowsserv/2003/all/techref/en-us/W2K3TR_unatt_how.asp?frame=true&hidetoc=true.
  6. Сайт с источником знаний и откровений по автоматизации установки MS Windows – http://unattended.msfn.org.
  7. Русский перевод и адаптация информации с unattended.msfn.org – http://oszone.net/display.php?id=2747.
  8. Перевод статьи об интеграции дисковых драйверов – http://oszone.net/display.php?id=2782.
  9. Перевод статьи о параметрах [SourceDisksFiles] – http://oszone.net/display.php?id=3123.
  10. Перевод статьи об установке через WINNT.SIF – http://oszone.net/display.php?id=2781.
  11. Описание опций WINNT.SIF в секции GuiUnattended – http://www.microsoft.com/technet/prodtechnol/windowsserver2003/library/TechRef/755f8019-165a-4a50-802d-d1b116e91e7a.mspx.
  12. Drivers from CD (AutoIt method) – http://www.msfn.org/board/index.php?showtopic=51406.
  13. Архив DriversAutoit.zip – http://www.msfn.org/board/index.php?act=Attach&type=post&id=9070.
  14. Описание SetupCopyOEMInf – http://msdn.microsoft.com/library/default.asp?url=/library/en-us/setupapi/setup/setupcopyoeminf.asp.
  15. Справочник по опциям командной строки MS Windows XP – http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/if.mspx.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru