Ручная интеграция или кому интересно, что там внутри
Сам принцип ручной интеграции нами был подсмотрен на ресурсе OSzone.net, но сразу оговоримся, что способ, предложенный на данном сайте, у нас реализовать не удалось, и поэтому мы немного модифицировали его под нашу ситуацию. Такой способ, возможно, будет актуален в случае, когда у вас имеются драйвера для SATA/RAID-контроллеров, но при этом доступ к Интернету и/или nLite отсутствуют.
Шаг первый
Создадим в папке, где находится дистрибутив Windows, иерархию каталогов следующего вида: $OEM$$1driversintel. Туда поместим распакованные файлы драйверов с расширением SYS, CAT, INF и д.р. Так как некоторые производители, к которым относится и Intel, выпускают свои драйвера в кабинетных архивах (файлы с расширением CAB) и с setup.exe. В этом случае выполните следующую команду из командной строки:
путьsetup.exe –a –p $OEM$$1driversintel
где "путь" - директория в которой хранятся архивы CAB и setup.exe. В нашем случае мы получили файлы: TXTSETUP.OEM, iaAHCI.cat, iaStor.cat, iaAHCI.inf, iaStor.inf, iaStor.sys, license.txt.
Шаг второй
На втором этапе необходимо сделать сжатые копии всех SYS-файлов при помощи утилиты makecab и скопировать их в папку I386 дистрибутива Windows XP. Для этого из командной строки запускаем следующую команду:
makecab $OEM$$1driversintelимя_файла.sys I386имя_файла.SY_
Обратим внимание, что файлов с расширением SYS может быть несколько и выше указанную команду необходимо запускать для каждого, но только для тех имена которых совпадает с именами INF-файлов. Для нашего случая такой был один:
makecab $OEM$$1driversinteliaStor.sys I386iaStor.SY_
После того как будут сделаны все сжатые копии, файлы с расширениями SYS, CAT, INF (iaAHCI.cat, iaStor.cat, iaAHCI.inf, iaStor.inf, iaStor.sys) поместим в каталог I386NLDRV 01, к которому чуть ниже мы пропишим путь.
Шаг третий
Далее открываем в Блокноте или любом другом текстовом редакторе файл txtsetup.sif из директории I386.
Проделаем следующие вставки:
1) Находим секцию [SourceDisksFiles.x86] куда добавляем строки, где будут перечислены наши файлы, упомянутые в первом шаге, следующего формата:
iaahci.cat = 1984,,,,,,,1984,0,0
iaahci.inf = 1984,,,,,,,1984,0,0
iastor.cat = 1984,,,,,,,1984,0,0
iastor.inf = 1984,,,,,,,1984,0,0
iaStor.sys = 1,,,,,,4_,4,1,,,1,4
iastor.sys = 1984,,,,,,,1984,0,0
2) Далее нам нужно скопировать в txtsetup.sif информацию либо с OEM-, либо с INF-файлов. Выбор того или иного файла осуществляется по принципу - если есть одноименный SYS-файлу файл с расширением OEM, то открываем его, а если нет, то открываем одноименный INF-файл.
Если вы открыли OEM-файл, то находим строку [HardwareIds…] после которой будут идти строки вида:
id = "PCIVEN_8086&DEV_282A&CC_0104","iaStor"
id = "PCIVEN_8086&DEV_2829&CC_0106","iaStor"
...
В INF-файле необходимая нам информация находиться после секции [Strings] и представлена виде:
PCIVEN_8086&DEV_2822&CC_0104.DeviceDesc = "Intel(R) ICH8R/ICH9R SATA RAID Controller"
PCIVEN_8086&DEV_282A&CC_0104.DeviceDesc = "Intel(R) 82801HEM SATA RAID Controller"
...
Из этих данных нам понадобится скопировать лишь только часть: PCIVEN_8086&DEV_2822&CC_0104.
Далее переходим к файлу txtsetup.sif. Находим секцию [HardwareIdsDatabase] и вставляем все выбранные части строк добавляя к каждой "=имя_файла", где "имя_файла" - имя вашего SYS-файла, одноименного OEM- или INF-файлу.
В нашем случае достаточно было следующего:
[HardwareIdsDatabase]
PCIVEN_8086&DEV_2829&CC_0106 = "iaStor"
PCIVEN_8086&DEV_282A&CC_0104 = "iaStor"
Но для пущей уверенности рекомендуем скопировать все строки, подходящие под вышеобозначенное условие.
3) Теперь находим секцию [SCSI.load] и добавляем строку для каждого SYS-файла вида: имя_файла = имя_файла.sys,4. В нашем примере это выглядит так:
[SCSI.Load]
iaStor = iaStor.sys,4
...
4) Затем необходимо дать описание, устройствам, для которых интегрируются драйвера. Описание может быть любым, которые вы пожелаете. Но проще всего воспользоваться описанием из OEM- или INF-файлов. Для этого найдем секцию [SCSI] после которой добавим для каждого SYS-файла строки вида: имя_файла = "Описание".
В нашем примере это выглядит так:
[SCSI]
iaStor = "Intel(R) 82801HEM/HBM SATA AHCI Controller (Mobile ICH8M-E/M)"
iaStor = "Intel(R) 82801HEM SATA RAID Controller (Mobile ICH8M-E)"
...
На этом редактирование txtsetup.sif закончено. Сохраняем и закрываем файл.
Шаг четвертый
Следующим шагом откорректируем файл dosnet.inf, которой находится в той же директории I386. Эти изменения необходимы чтобы драйверы корректно устанавливались при инсталляции системы с жесткого диска или ее обновления с оптического носителя. Для этого следует сделать следующие операции:
1) Находим секцию [Directories], где в конец добавляем строку d11 = "i386NLDRV 01", которая будет указывать путь размещения файлов, упомянутых в втором шаге:
d1 = I386
d2 = cmpnents abletpcI386
d3 = cmpnentsmediactrI386
d4 = cmpnents etfxI386
d11 = "i386NLDRV 01"
2) После [FloppyFiles.1] вставляем строку вида: d1,имя_файла.sys. (Пример: d1,iaStor.sys.)
3) Находим секцию [Files], перед которым добавляем следующие:
[OptionalSrcDirs]
NLDRV
4) Вставляем в [Files], как и во втором пункте, строку вида: d1,имя_файла.sys.
5) Далее в конце секции [Files] вставляем строки: d11,имя_файла.sys, d11,имя_файла.inf, d11, имя_файла.cat. В нашем случае это выглядит так:
d11,iaahci.cat
d11,iaahci.inf
d11,iastor.cat
d11,iastor.inf
d11,iastor.sys
...
Непосредственно на этом этапе интеграцию SATA/RAID-драйверов можно считать завершенной. После чего нам необходимо будет создать загрузочный диск Windows и проверить правильно ли все сделали, поскольку все мы люди, которым свойственно ошибаться. Особенно в таком довольно запутанном деле как "колупание" дистрибутива Windows.
Создание ISO-образа
Для создания ISO-образов существует множество программ, но цель заключается в том, чтобы максимально использовать стандартные средства Windows. По этой причине мы воспользуемся консольным приложением CDImage, разработанное самой Microsoft.
Нам потребуется:
- непосредственно сама утилита CDImage.exe;
- xpboot.img - загрузчик для инсталляционного диска Windows;
- пакетный файл create_iso.cmd, который можно создать при помощи любого тестового редактора, содержание которого описано ниже.
Чтобы упростить процесс создания ISO-образа дистрибутива нашей ОС до уровня запуска лишь одного файла, мы собрали все в один архив, который можно скачать с нашего сервера.
Далее изложено содержание файла create_iso.cmd, в котором понадобится указать пути к скопированному на жесткий диск дистрибутиву и путь, куда будет сохранен ISO образ:
@echo off
TITLE Creating ISO Image of Windows XP
ECHO.
:: Указываем путь к дистрибутиву ОС
SET DISTRO=F: emp8XP
:: Указываем путь, где создать результирующий ISO образ
SET OUTPUT=F: emp8
:: Далее указываем метку тома без пробелов
:: Она же будет использована как имя ISO образа
SET LABEL=WXP_X-DRIVERS
:: Список стандартных меток
:: Для Windows XP просмотреть можно перейдя по ссылке
:: Для Windows 2003
:: Снятие атрибутов файлов
ECHO Removing any possible attributes set on %DISTRO% and its subfolders...
attrib -R -H "%DISTRO%" /S /D
ECHO.
:: Создание ISO
ECHO Creating ISO...
CDIMAGE.EXE -l"%LABEL%" -h -j1 -oci -m -bxpboot.img "%DISTRO%" "%OUTPUT% %LABEL%.ISO"
ECHO.
PAUSE
EXIT
Итак, после всех внесенных изменений остается только запустить create_iso.cmd. По окончании работы программы создается ISO-образ WXP_X-DRIVERS.ISO, если вы, конечно, не поменяли метку тома.
Заметим, что пакетный файл create_iso.cmd может быть запущен из любого места при условии, что CDImage.exe и xpboot.img находятся в одной с ним директории. В противном случае вам нужно будет прописать полные пути к этим файлам.
Далее получившийся образ можно записать любой известной вам программой для прожига дисков. На этом раздел о ручной интеграции драйверов можно считать завершенным.