Інтеграція SATA
Примітка. У статті описано ручний метод інтеграції драйверів. Процес можна автоматизувати за допомогою nLite.
Крок 1 - Створення директорій
Створіть директорію для розміщення всіх драйверів та проміжних файлів, які конфігуруватимуться на попередньому етапі. У цій статті використовуватиметься директорія C:\preload, в якій треба створити піддиректорії таким чином C:\preload\$OEM$\$1\drivers
Крок 2 - Розпакування драйверів
Вам знадобляться драйвери для SATA та/або RAID контролерів. Їх можна взяти з CD, що поставлявся в комплекті з материнською платою чи ноутбуком. Нові версії драйверів можуть перебувати на сайті виробника.
Розпакуйте драйвери в директорію, названу на ім'я контролера. Наприклад, можлива така структура
Примітка: назви піддиректорій, що містять драйвери, повинні складатися з не більше восьми символів. Наприклад, для материнської плати ABIT IC7-MAXIII є два набори драйверів Silicon Images: Si3112r та Si3114r. У такому разі потрібно створити такі директорії
Якщо ваші драйвери знаходяться всередині інсталяційної програми (нерідко зустрічається у Intel), розпакуйте їх з *.ехе за допомогою WinRAR, наприклад.
На даному етапі у вас у відповідних директоріях повинні бути принаймні наступні файли
Крок 2а - Розпакування драйверів Intel
Драйвери Intel є особливим випадком. Якщо у вас немає вищевказаних файлів, то найімовірніше у вас є два кабінетні архіви (*.cab) іsetup.exe. У такому разі виконайте наступну команду з командного рядка:
c:\setup.exe -a -p c:\path
деpath- директорія, яку ви вибрали для розпакування. Після розпакування вашідрайвери будуть або в піддиректорії XP або drivers. Скопіюйте вміст цієї директорії. Дотримуючись нашої структури, ви повинні скопіювати вміст у
Крок 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: XPPC. Потім скопіюйте директорію $OEM$ з C:\preload в C:\XPCD.
Тепер потрібно зробити стислі копії всіх файлів *.sys і скопіювати їх в C:XPCDi386 за допомогою утиліти 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
Знайдіть першу секцію [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& нічого.
Тепер помістіть скопійовані рядки в розділ [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 = "Si3112 "Si3112r"
PCI\VEN_1002&DEV_436E = "Si3112r" PCI\VEN_1002&DEV_4379 = "Si3112r" PCI\VEN_1002&DEV_437A = "Si3112r" PCI\3 8>PCI\ VEN_1106&DEV_3149 = "viasraid"
Крок 7 - Редагування секцій [SCSI.load] та [SCSI] файлу txtsetup.sif
Тепер знайдіть секцію [SCSI.load] в районі рядка 19266. Додайте наступний рядок для кожного файлу *.sys
де 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 – ім'я вашого *.sys файлу, a Description – будь-який опис, який ви хочете дати контролеру. Найпростіше використовувати описи з файлу *.inf. У нашому прикладі це виглядає так:
[SCSI] iStor = "Intel(R) 82801FR/82801ER/6300ESB SATA RAID Controller" Si3112r = "Silicon Image SiI 3x12 SATARaid Controller" Si3114r = "Silicon Image SiI 3114>viasraid = "VIA Serial ATA RAID Controller"
У цьому редагуванняtxtsetup.sifзавершено. Закрийте та збережіть файл.
Крок 8 - Редагування (створення) winnt.sif
[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] з таким вмістом:
Закрийтеwinnt.sifта збережіть зміни (або збережіть ваш файл з ім'ямwinnt.sifу i386).
Висновок
Загалом на цьому процедуру інтеграції SATA/RAID драйверів можна вважати закінченою. Подальші кроки оригінального керівництва розповідаютьпро створення завантажувального диска Windows XP. Не бачу