PXELINUX и новые возможности установки Windows

Подготовка файлов для установки Windows XP (платформа x86 и x64)

Подготавливаем файл startrom.n12 (startrom.com)

Для начала хочу напомнить, что разница между файлами startrom.com и startrom.n12, состоит в требовании нажатия для установки клавишу F12. Так как это требование в нашем случае лишнее, то в дальнейшем будет использоваться файл startrom.n12.

Во-первых, необходимо переименовать startrom.n12 в startrom.0.

Внимание! Расширение обязательно должно быть 0 (цифра нуль).

Во-вторых, необходимо внутри этого файла произвести замену ntldr на 001dr. Имя файла может быть любым. Главное, чтобы количество символов в именах файлов совпадало.

К сожалению, в Windows XP нет стандартных утилит, которые могут произвести замену содержимого файла, но зато есть язык программирования VBScript, входящий в состав операционной системы. С помощью этой программы (rep.vbs) можно выполнить все необходимые преобразования.

Редактируем файл c:\netboot\winxp\startrom.0, заменяя ntldr на 001dr.

cscript rep.vbs c:\netboot\winxp\startrom.0 ntldr c:\netboot\winxp\startrom.0 001dr /force

Аналогично поступаем с файлом startrom.n12 от Windows XP Professional x64. Только на этот раз ntldr меняем на 002dr.

cscript rep.vbs c:\netboot\winxp64\startrom.n12 ntldr c:\netboot\winxp64\startrom.0 002dr

Подготавливаем файл ntldr

Теперь займемся файлом c:\netboot\winxp\ntldr. Как вы уже догадались, он должен быть переименован в 001dr. Также в нем необходимо заменить winnt.sif на 001nt.sif, а ntdetect.com на 001etect.com. Кроме того этот файл должен находиться в каталоге c:\netboot.

Редактируем файл c:\netboot\winxp\ntldr, заменяя winnt.sif на 001nt.sif и сохраняем его, как 001dr в каталоге c:\netboot.

cscript rep.vbs c:\netboot\winxp\ntldr winnt.sif c:\netboot\001dr 001nt.sif

Редактируем файл c:\netboot\001dr, заменяя ntdetect.com на 001etect.com.

cscript rep.vbs c:\netboot\001dr ntdetect.com c:\netboot\001dr 001etect.com /force

Аналогичную операцию проводим и с 64-битной версией Windows XP Professional.

Редактируем файл c:\netboot\winxp64\ntldr, заменяя winnt.sif на 002nt.sif с сохранением результата в файле c:\netboot\002dr.

cscript rep.vbs c:\netboot\winxp64\ntldr winnt.sif c:\netboot\002dr 002nt.sif

Редактируем файл c:\netboot\002dr, заменяя ntdetect.com на 002etect.com.

cscript rep.vbs c:\netboot\002dr ntdetect.com c:\netboot\002dr 002etect.com /force

Меняем порт BINL

64-битная версии Windows XP требует совершенно другие драйвера в отличие от 32 битной, но информацию о них по-прежнему спрашивает у BINL (binlsrv.py). А BINL работает по протоколу UDP и висит на порту номер 4011. Соответственно второй экземпляр, но уже с информацией о 64 битных драйверах, запустить на этом же порту не получится.

Но на этот случай автор ris-linux , многоуважаемый Gianluigi Tiesi, ввел специальный ключ (–p), который сообщает binlsrv.py, какой использовать порт. Но запуск самого binlsrv.py с указанием другого порта не достаточно. Так как необходимо еще и загрузчик Windows XP/2003 упросить общаться с BINL по другому порту. В целях удобства изложения я буду настраивать загрузчик 64-х битной версию Windows XP на порт 4012.

Внимание! Перед тем как настраивать порт рекомендую проверить, не занят ли он. Сделать это можно, например командой netstat -p UDP -n -a |findstr /C:":4012". Пустой вывод говорит о свободности порта.

Для этого необходимо опять же отредактировать файл 002dr (новое название ntldr). Сделать это можно с помощью binlport.vbs - специально написанной для этих целей программы на VBScript.

cscript binlport.vbs c:\netboot\002dr 4012

Подготавливаем файл winnt.sif

Займемся файлом c:\netboot\winxp\winnt.sif. Во-первых, его необходимо отредактировать, изменив значения параметров OriSrc и SetupSourceDevice.

OriSrc="\\192.168.200.1\netboot\winxp\I386"
SetupSourceDevice="\Device\LanmanRedirector\192.168.200.1\netboot\WINXP\INSTALL"

Напомню, 192.168.200.1 это IP адрес нашего сервера. Если используете другую адресацию, то необходимо это значение изменить.

Во-вторых, его нужно переименовать в 001nt.sif и переместить в каталог c:\netboot. Сделать это можно, например, командой

move c:\netboot\winxp\winnt.sif c:\netboot\001nt.sif

Аналогично поступаем и с Windows XP Professional x64

Только файл переименовываем в 002nt.sif и меняем содержимое.

move c:\netboot\winxp64\winnt.sif c:\netboot\002nt.sif

Содержимое файла 002nt.sif

OriSrc="\\192.168.200.1\netboot\winxp64\I386"
SetupSourceDevice = "\Device\LanmanRedirector\192.168.200.1\ netboot\WINXP64\INSTALL"

Внимание! Параметр OriSrc в процессе инсталляции не участвует. Но его значение прописывается в реестре установленной системы и используется в случае до установки каких-либо компонентов.

Подготавливаем файл ntdetect.com

Займемся сначала файлом c:\netboot\winxp\ntdetect.com. Его необходимо переименовать в 001etect.com и перенести в каталог c:\netboot. Например, командой move /Y c:\netboot\winxp\ntdetect.com c:\netboot\001etect.com.

Похожим образом поступаем и с файлом для 64-битной версии Windows XP Professional. Только новое имя у него будет 002etect.com. Сделать это можно командой move /Y c:\netboot\winxp64\ntdetect.com c:\netboot\002etect.com.

Что получилось

Когда компьютер загрузит по протоколу TFTP файл \winxp\startrom.0, то автоматически будут загружены файлы \001dr, \001etect.com и \001nt.sif, а также дальнейшая загрузка файлов из каталога c:\netboot\winxp\install.

В случае установки Windows XP x64, то последовательность загрузки будет следующей. Сначала файл \winxp64\startrom.0. Затем \002dr, \002etect.com и \002nt.sif, с последующей загрузкой файлов из каталога c:\netboot\winxp64\install.