Интеграция SATA/RAID драйверов

Автор: Вадим Стеркин aka Vadikan
Иcточник: unattended.oszone.net
Опубликована: 02.03.2005

Описать интеграцию SATA/RAID драйверов я собирался давно. К сожалению, моя конфигурация не позволяет протестировать интеграцию таких драйверов, и следовательно самостоятельное написание статьи исключалось. В первоначальном варианте сайта на странице драйверов была ссылка на хорошую статью участника конференции MSFN GreenMachine, но она требовала от читателя некоторой подготовки. Именно на этой статье и основана страница, рассказывающая о SATA/RAID драйверах, на сайте MSFN. Эта страница появилась там относительно недавно, и не существовала на момент написания первой редакции данной статьи.

Так или иначе, нашелся человек по имени Michael Hollinger, который взял на себя труд объединить в одно руководство информацию, разбросанную по форуму MSFN и сайтам участников форума. Его руководство показалось мне несложным и дающим достаточно информации для осуществления процесса интеграции "от и до". Michael любезно разрешил перевести его руководство на русский язык. Оригинальное руководство (PDF, 1.28 Mb) является публично доступной информацией и может быть использовано только в бесплатных или некоммерческих публикациях. Дисклэймер и контактную информацию автора можно найти в тексте руководства. Недавно Мichael прислал мне новую версию своего руководства, которое и выложено сейчас у меня. Руководство стало максимально подробным, с громадным количеством скриншотов (в основном Проводника и Блокнота ;-). Но поскольку суть осталась прежней, я не стал менять содержание своей статьи.

Примечание. В статье описан ручной метод интеграции драйверов. Процесс можно автоматизировать при помощи nLite.

Надеюсь, что статья будет полезна не только людям, интересующимся автоматической установкой, но и всем, кто не имеет возможности установить SATA/RAID драйверы в процессе установки Windows по причине отсутствия флоппи привода. Все вопросы или замечания по данной статье, пожалуйста, задавайте в форуме. Теперь к делу.

Шаг 1 - Создание директорий

Создайте директорию для размещения всех драйверов и промежуточных файлов, которые будут конфигурироваться на предварительном этапе. В данной статье будет использоваться директория C:\preload, в которой надо создать поддиректории следующим образом C:\preload\$OEM$\$1\drivers

Шаг 2 - Распаковка драйверов

Вам понадобятся драйверы для SATA и/или RAID контроллеров. Их можно взять с CD, поставлявшегося в комплекте с материнской платой или ноутбуком. Более новые версии драйверов могут находиться на сайте производителя.

Распакуйте драйверы в директорию, названную по имени контроллера. Например, возможна такая структура

C:\preload\$OEM$\$1\drivers\motherboard\controller

Примечание: названия поддиректорий, содержащих драйверы, должны состоять из не более чем восьми символов. Например, для материнской платы ABIT IC7-MAXIII есть два набора драйверов Silicon Images: Si3112r и Si3114r. В таком случае нужно создать следующие директории

C:\preload\$OEM$\$1\drivers\IC7_MAX3\Si3112r
C:\preload\$OEM$\$1\drivers\IC7_MAX3\Si3114r

Если ваши драйверы находятся внутри установочной программы (нередко встречается у Intel), то распакуйте их из *.ехе при помощи WinRAR, например.

На данном этапе у вас в соответствующих директориях должны быть, по крайней мере, следующие файлы

*.sys
*.cat
*.inf

Шаг 2а - Распаковка драйверов Intel

Драйверы Intel представляют собой особый случай. Если у вас нет вышеуказанных файлов, то вероятнее всего у вас есть два кабинетных архива (*.cab) и setup.exe. В таком случае выполните следующую команду из командной строки:

c:\setup.exe –a –p c:\path

где path - директория, которую вы выбрали для распаковки. После распаковки ваши драйверы будут либо в поддиректории XP либо drivers. Скопируйте содержимое данной директории. Следуя нашей структуре, вы должны скопировать содержимое в

C:\preload\$OEM$\$1\drivers\motherboard\intel

Шаг 3 - Подбор файлов

Вы можете смело удалить файлы readme и любые директории, относящиеся к другим операционным системам (Windows 2000 и Windows 98). Если одни и те же драйверы предназначаются для XP и 2000, то их, понятное дело, удалять не надо. Продолжая пример с ABIT IC7-MAXIII у нас теперь такая картина:

В директории C:\preload\$OEM$\$1\drivers\IC7_MAX3\Intel находятся файлы

TXTSETUP.OEM
iaAHCI.cat
iaStor.cat
iaAHCI.inf
iaStor.inf
iaStor.sys

А в директории C:\preload\$OEM$\$1\drivers\IC7_MAX3\Si3112r находятся файлы

SilSupp.cpl
TxtSetup.oem
si3112r.cat
Si3112r.inf
Si3112r.sys
SIWinAcc.sys
SiiSupp.vxd

и так далее для каждого из контроллеров.

Шаг 4 - Копирование файлов

Если содержимое установочного диска Windows XP у вас еще не скопировано на жесткий диск, но сейчас самое время это сделать. Копируем в C:\XPCD. Затем скопируйте директорию $ОЕМ$ из C:\preload в C:\XPCD.

Теперь нужно сделать сжатые копии всех *.sys файлов и скопировать их в C:\XPCD\i386 при помощи утилиты makecab. Из командной строки запустите следующую команду:

makecab C:\XPCD\$OEM$\$1\drivers\motherboard\controller\controller.sys C:\XPCD\I386\controller.SY_

где motherboard - название директории, которое вы дали по названию материнской платы, controller - соответственно название директории контроллера, а controller.sys и controller.SY_ - названия ваших *.sys файлов. У вас может быть более одного *.sys файла в каждой директории, однако вам нужен только тот, имя которого совпадает с именем *.inf файла. Если взять за пример шаг 6, то из директории Si3112r нам нужен только Si3112r.sys. Аналогичным образом добавьте в i386 все остальные *.sys файлы.

Шаг 5 - Редактирование секции [SourceDisksFiles] файла txtsetup.sif

Откройте в текстовом редакторе файл txtsetup.sif расположенный в C:\XPCD\i386. Блокнот подойдет, хотя и не слишком удобен для данной цели. Главное, чтобы редактор не создавал ненужного форматирования, такого как переносы строк, например.

Найдите первую секцию [SourceDisksFiles], которая расположена в районе 189 строки. В самом начале секции [SourceDisksFiles] добавьте следующую строку

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

где controller.sys - имя файла, созданного на четвертом шаге. Аналогичным образом добавьте строки, соответствующие остальным *.sys файлам. Каждому файлу должна соответствовать одна строка. В нашем примере:

[SourceDisksFiles]
iaStor.sys = 1,,,,,,3_,4,1
Si3112r.sys = 1,,,,,,3_,4,1
Si3114r.sys = 1,,,,,,3_,4,1
viasraid.sys = 1,,,,,,3_,4,1

Рассказ о формате этих строк я решил вынести на отдельную страницу ввиду сложности материала.

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

[FloppyFiles.2]
d1,iaStor.sys
d1,Si3112r.sys
d1,Si3114r.sys
d1,viasraid.sys

[Files]
d1,iaStor.sys
d1,Si3112r.sys
d1,Si3114r.sys
d1,viasraid.sys

Шаг 6 - Редактирование секции [HardwareIdsDatabase] файла txtsetup.sif

Не закрывайте txtsetup.sif и найдите секцию [HardwareIdsDatabase], находящуюся в районе строки 18800. Мы через минуту вернемся к этой секции, а пока рассмотрим файлы, находящиеся в директориях с драйверами. Там есть файлы, информацию из которых нужно скопировать в txtsetup.sif. Нам понадобится либо *.oem либо *.inf файл из каждой из них. Идем в первую директорию и действуем по следующему принципу: если есть одноименный *.sys файлу *.oem файл, то открываем его, а если нет, то открываем одноименный *.inf файл. Если используете *.oem файл, то найдите все строки, начинающиеся с PCI\VEN_, заключенные в кавычки. Если используете *.inf файл, то найдите секцию [Strings], где есть аналогичные строки (но без кавычек). Проигнорируйте строки, начинающиеся с %. Скопируйте каждую строку от начала до первой точки (не включая точку). Например, если строка PCI\VEN_8086&DEV_2652&CC_0104.DeviceDesc = "Intel(R) 82801FR SATA RAID Controller", то скопировать нужно только PCI\VEN_8086&DEV_2652&CC_0104 и больше ничего.

Теперь поместите скопированные строки в секцию [HardwareIdsDatabase] файла txtsetup.sif и добавьте к каждой = "sysfile", где sysfile - имя вашего *.sys файла одноименного *.oem или *inf. файлу. В нашем примере в секции [HardwareIdsDatabase] это выглядит так:

[HardwareIdsDatabase]
PCI\VEN_8086&DEV_2652&CC_0104 = "iaStor"
PCI\VEN_8086&DEV_2652&CC_0106 = "iaStor"

PCI\VEN_8086&DEV_24DF&CC_0104 = "iaStor"
PCI\VEN_8086&DEV_25B0&CC_0104 = "iaStor"
PCI\VEN_1095&DEV_3112 = "Si3112r"
PCI\VEN_1095&DEV_3512 = "Si3112r"

PCI\VEN_1002&DEV_436E = "Si3112r"
PCI\VEN_1002&DEV_4379 = "Si3112r"
PCI\VEN_1002&DEV_437A = "Si3112r"
PCI\VEN_1095&DEV_3114 = "Si3114r"
PCI\VEN_1106&DEV_3149 = "viasraid"

Шаг 7 - Редактирование секциий [SCSI.load] и [SCSI] файла txtsetup.sif

Теперь найдите секцию [SCSI.load] в районе строки 19266. Добавьте следующую строку для каждого *.sys файла

sysfile = sysfile.sys,4

где sysfile опять же имя вашего *.sys файла. В нашем примере в секции [SCSI.load] это выглядит так:

[SCSI.Load]
iaStor = iaStor.sys,4
Si3112r = Si3112r.sys,4
Si3114r = Si3114r.sys,4
viasraid = viasraid.sys,4

Теперь найдите секцию [SCSI] в районе строки 21613. Добавьте следующие строки для каждого *.sys файла.

sysfile = "Description"

где sysfile - имя вашего *.sys файла, a Description - любое описание, которое вы хотите дать контроллеру. Проще всего использовать описания из *.inf файла. В нашем примере это выглядит так:

[SCSI]
iaStor = "Intel(R) 82801FR/82801ER/6300ESB SATA RAID Controller"
Si3112r = "Silicon Image SiI 3x12 SATARaid Controller"
Si3114r = "Silicon Image SiI 3114 SATARaid Controller"
viasraid = "VIA Serial ATA RAID Controller"

На этом редактирование txtsetup.sif закончено. Закройте и сохраните файл.

Шаг 8 - Редактирование (создание) winnt.sif

Теперь настало время изменить winnt.sif (или создать новый, если у вас его еще нет). Подробнее о winnt.sif я рассказываю тут, поэтому остановлюсь лишь на секции [Unattended]. Для успешной установки драйверов необходимо наличие в секции следующих параметров

[Unattended]
OEMPreinstall=Yes
OemPnPDriversPath="Drivers\path"

где path - путь к директории с драйверами контроллера. В нашем примере это выглядит так:

[Unattended]
OEMPreinstall=Yes
OemPnPDriversPath="drivers\IC7_MAX3\intel;drivers\IC7_MAX3\Si3112r;drivers\IC7_MAX3\Si3114r;drivers\IC7_MAX3\via"

Поскольку у нас драйвера расположены в нескольких директориях, мы заключаем их перечисление в кавычки и разделяем "точкой с запятой". Все значения параметра OemPnPDriversPath должны быть в одну строку, переносы недопустимы.

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

[Data]
MsDosInitiated="0"

Закройте winnt.sif и сохраните изменения (или сохраните ваш файл с именем winnt.sif в i386).

Заключение

В общем, на этом процедуру интеграции SATA/RAID драйверов можно считать законченной. Дальнейшие шаги оригинального руководства рассказывают о том, как создать загрузочный диск Windows XP. Не вижу смысла повторяться.

Благодарности

Остается лишь поблагодарить Майкла Холлингера и отдать должное тем людям, чьи книги, статьи и сообщения в форумах были использованы в его руководстве. Автор следует одному из общепринятых Американских стилей, используемых в научных публикациях. Я, уж извините, стиль выдерживать не буду ;-)

  1. Chandra, Omeeda. (2004 October). Книга Update Your Windows XP CD. Maximum PC, 68-70
  2. GreenMachine. Slipstreaming SATA/RAID Drivers (ссылки на статью больше нет)
  3. Gosh. Txtsetup.sif.
  4. raskren (2004, January 5) Сообщение в теме Unattended install, SATA drivers, and NO Floppy , I finally got it to work!
  5. raskren (2004, February 9) Сообщение в теме Switches in TXTSETUP.SIF.

Ссылка: http://www.oszone.net/2782/