Введение
Установка Windows XP
по сети позволяет сократить время на развертывание системы. Особенно
это заметно при установке на несколько компьютеров. А также
способствует избавлению от всевозможных компакт-дисков и дискет.
У Microsoft есть технология под названием RIS. Remote Installation Services (RIS) позволяет установить операционную систему на компьютеры с поддержкой удаленной загрузки по сети. RIS ориентирован на крупные сети с большим количеством компьютеров. Для своей работы служба RIS требует наличие Active Directory (доменная организации сети), что в свою очередь требует использования операционных систем Windows 2000 Server и Windows 2003.
В этой статье я опишу способ установки Windows XP
на компьютеры с поддержкой удаленной загрузки по сети, но не требующей
домена, достаточно только подсоединить компьютеры к сети. Думаю, эта
статья будет полезна всем тем, кто хочет использовать возможности RIS, но не желает переводить сеть на доменную организацию.
PXE и процесс загрузки по сети
PXE это стандарт, который начал разрабатывать Intel. Потом к разработке PXE подключились такие гиганты, как 3Com, HP, Dell, Compaq.
PXE
работает только с сетевыми картами, и позволяет превратить сетевую
карту в загружаемое устройство, такое же, как дисковод или жесткий
диск.
Для организации сетевой загрузки потребуется программное обеспечение: DHCP сервер и TFTP сервер.
Процесс загрузки по сети можно описать примерно так. Как только включается компьютер, начинает работать PXE загрузчик, который находится в boot ROM сетевого адаптера. Сетевая карта получает IP адрес. IP адрес выдается DHCP сервером. Также DHCP сервер сообщает IP-адрес TFTP сервера и имя загрузочного файла. После получения этой информации сетевая карта обращается к TFTP серверу и загружает файл. Загрузив файл, PXE прекращает свою работу и передает управление загруженной программе.
А что делать, если у сетевой карты отсутствует boot ROM? На помощь нам придет утилита, которая входит в дистрибутив Windows 2000 Server и Windows 2003, под названием "Microsoft Windows Remote Boot Disk Generator" (rbfg.exe). С помощью этой программы создается загрузочная дискета, которая позволяет сетевой карте работать с PXE,
т.е. производить загрузку по сети. К сожалению, у этой утилиты
ограничена поддержка только 32 сетевыми адаптерами. Если Вы не нашли
свою сетевую карту в списке поддерживаемых устройств, то тогда стоит
обратить внимание на сайт ROM-o-matic.net. На момент написания статьи этот сайт поддерживал 279 сетевых адаптеров.
Подготовка каталогов и файлов
Сначала я создаю директорию E:\NETBOOT. В ней создаю каталог WINXPSP2. Далее в тексте под словосочетанием дистрибутив Windows XP я буди считать дистрибутив, подготовленный в статье Создание диска unattended (автоматической) установки Windows XP, хотя подойдет и любой дистрибутив Windows XP.
Создаю в каталоге E:\NETBOOT\WINXPSP2 директорию INSTALL. В этом каталоге будет находиться дистрибутив Windows XP. А также, если используется, и папка $OEM$
Теперь этот каталог (E:\NETBOOT\WINXPSP2)
необходимо сделать доступным по сети (расшарить). Для этого нажимаем
правую клавишу мыши на папке с именем "WINXPSP2" и выбираем пункт
"Sharing and Security: (Общий доступ и безопасность:)". В появившемся
окне
выбираю пункт "Share this folder (Открыть общий доступ к этой
папке)" в поле "Share name: (Общий ресурс)" указываю "WINXPSP2". Этой
папке необходимо предоставить права для группы "Everyone (Все)" только
"Read (Чтение)"
Если директория WINXPSP2 находится на
разделе с файловой системой NTFS, то необходимо в свойствах этого
каталога в "Security (Безопасность)" также добавить группу "Everyone
(Все)". Этой группе необходимо разрешить чтение
Также необходимо убедиться, что учетная запись "Guest (Гость)" активирована.
Подготовка дистрибутива Windows XP для установки по сети
Из дистрибутива Windows XP в каталог E:\NETBOOT\WINXPSP2 копирую файлы ntdetect.com, setupldr.ex_, startrom.co_, startrom.n1_. Теперь необходимо распаковать файлы setupldr.ex_, startrom.co_, startrom.n1_ с помощью команд: expand setupldr.ex_ ntldr, expand -r startrom.co_, expand -r startrom.n1_ соответственно.
Примечание. Если необходимо установить русскую версию Windows XP, то необходимо еще из дистрибутива в каталог E:\NETBOOT\WINXPSP2 скопировать файл bootfont.bin. Это позволит во время инсталляции отображать на русском языке название загружаемых драйверов.
Теперь файлы setupldr.ex_, startrom.co_, startrom.n1_ мне больше не нужны их можно удалить с помощью команды del *.*_. Результат манипуляций с файлами изображен на
Теперь необходимо распаковать драйвера для сетевых карт. Создаю каталог E:\NETBOOT\WINXPSP2\DRIVERS. С помощью команды expand E:\NETBOOT\WINXPSP2\INSTALL\I386\net*.in_ -r -f:*.inf E:\NETBOOT\WINXPSP2\DRIVERS я получил распакованные файлы net*.inf.
Далее мне необходимо найти файлы драйверов (*.SYS) в файлах net*.inf. Поиск выполняю с помощью команды: for %i in (E:\NETBOOT\WINXPSP2\DRIVERS\*.inf) do type %i | findstr ".sys,,," >>E:\NETBOOT\WINXPSP2\DRIVERS\list. Однако файл list
еще не пригоден к дальнейшему использованию. Его необходимо почистить,
другими словами убрать ",,,2". Сделать это мне поможет команда for /F "delims=," %f in (E:\NETBOOT\WINXPSP2\DRIVERS\list) do echo %f >>E:\NETBOOT\WINXPSP2\DRIVERS\list.txt.
Примечание. Две вышеперечисленных команды должны быть выполнены командным интерпретатором cmd.exe. Если же команды выполняются через "Start -> Run" ("Пуск -> Выполнить"), то их необходимо изменить к следующему виду cmd /c "for %i in (E:\NETBOOT\WINXPSP2\DRIVERS\*.inf) do type %i | findstr ".sys,,," >>E:\NETBOOT\WINXPSP2\DRIVERS\list" и cmd /c "for /F "delims=," %f in (E:\NETBOOT\WINXPSP2\DRIVERS\list) do echo %f >>E:\NETBOOT\WINXPSP2\DRIVERS\list.txt" соответственно.
Выполнив все вышеперечисленные команды, я получил список файлов,
которые содержат драйвера для сетевых карт. Осталось только извлечь их
из файла driver.cab. Для извлечения я сначала создаю каталог E:\NETBOOT\WINXPSP2\DRIVERS\SYS. Затем с помощью команды for
/f %i in (E:\NETBOOT\WINXPSP2\DRIVERS\list.txt) do expand
E:\NETBOOT\WINXPSP2\INSTALL\I386\driver.cab -r -f:%i
E:\NETBOOT\WINXPSP2\DRIVERS\SYS я извлекаю файлы драйверов из driver.cab в каталог E:\NETBOOT\WINXPSP2\DRIVERS\SYS.
Добавление поддержки новых сетевых адаптеров
За последнее время появились новые сетевые адаптеры, драйвера для которых отсутствуют в дистрибутиве Windows XP. Эта ситуация может затруднить установку Windows XP по сети. Для исправления этой проблемы можно воспользоваться файлом lan-drivers.zip.
Этот файл представляет собой собрание драйверов, для новых сетевых
адаптеров. Эти драйвера предназначены только для text-mode
Setup.(текстовом режиме установки)Windows XP.
В настоящий момент реализована поддержка следующих сетевых карт:
-
Marvell Yukon Ethernet Controller
-
Broadcom NetLink Ethernet controller (5781, 5786, 5787, 5788, 5789)
-
NVIDIA nForce Networking Controller
-
3Com 940
-
Realtek RTL8111B, RTL8168B, RTL8111, RTL8168, RTL8111C
-
Intel PRO/1000
Для установки пакета драйверов необходимо распаковать файл lan-drivers.zip в каталог c:\lan-drivers. Затем необходимо скопировать c:\lan-drivers\*.inf в каталог e:\netboot\winxpsp2\drivers, а c:\lan-drivers\sys в каталог e:\netboot\winxpsp2\drivers\sys.
Во время копирования может возникнуть сообщение, что в каталоге
существует уже такой файл. В этом случае существующий файл необходимо
переписать новым (из каталога c:\lan-drivers).
Самостоятельная установка драйверов
К сожалению, файл lan-drivers.zip
пока содержит не очень много драйверов. Поэтому ниже я приведу примеры,
как самостоятельно установить драйвера сетевого адаптера для установкиWindows XP по сети.
Marvell Yukon Ethernet Controller
С сайта производителя скачиваю драйвер. Распаковываю архив yk51x86.zip. Файл yk51x86.inf копирую в E:\NETBOOT\WINXPSP2\DRIVERS, а файд yk51x86.sys в E:\NETBOOT\WINXPSP2\DRIVERS\SYS.
Broadcom NetLink Ethernet controller (5781, 5786, 5787, 5788, 5789)
С сайта производителя скачиваю драйвер. Распаковываю архив win_xp_2k3_32-9.81d.zip.
Непонятно по какой причины Broadcom в своих драйверах для Windows XP/2003 оставляют описание установки для Windows 2000. Для корректной дальнейшей обработки файла b57win32.inf необходимо его отредактировать. Необходимо найти строку [Broadcom] и заменить ее на [Bbroadcom].
Файл b57win32.inf копирую в E:\NETBOOT\WINXPSP2\DRIVERS, а файд b57xp32.sys в E:\NETBOOT\WINXPSP2\DRIVERS\SYS.
NVIDIA nForce Networking Controller
К сожалению, на сайте NVIDIA я не нашел драйверов для сетевых карт NVIDIA nForce Networking Controller, которые используются во время установки в текстовом режиме (text-mode). Служба поддержки NVIDIA говорит, что, если Вам необходимы эти драйвера, то связывайтесь с производителями материнских плат, и дает ссылку на файл RIS_2K&XP_V471.zip с сайта ASUS. К сожалению, эта старая версия драйверов для NVIDIA nForce Networking Controller, но к счастью на сайте присутствует и более новая версия. Итак, загружаю файл MCP55_RIS_V916.zip. Распаковываю его. Из каталога RIS\nvris32 копирую файл nvnb5032.inf в E:\NETBOOT\WINXPSP2\DRIVERS, а файлы nvnb5032.sys, nvnrm.sys, nvsnpu.sys в E:\NETBOOT\WINXPSP2\DRIVERS\SYS.
В завершении осталось только файлы из каталога SYS скопировать в E:\NETBOOT\WINXPSP2\INSTALL\I386.
Настройка программы TFTPD32 и RIS-LINUX
Настройка программы TFTPD32
Программа TFTPD32
представляет собой TFTP сервер/клиент, BOOTP/DHCP сервер, SNTP сервер и
SYSLOG сервер. Из всех возможностей программы мне понадобится только
DHCP и TFTP сервер.
Настройка TFTP сервера (TFTPD32)
Сначала в поле "Base Directory" я указываю директорию, где находится загружаемые файлы Windows XP. Эта директория E:\NETBOOT\WINXPSP2.
Затем я отключаю не нужные режимы, оставляю только "TFTP Server" и
"DHCP Server". Далее "TFTP Security" устанавливаю в режим "None".
Включаю режим "Allow '/'As virtual root". Включаю режим "Use
anticipation window", в качестве параметра устанавливаю значение 14320.
Этот последний параметр позволит увеличить скорость загрузки файлов с
TFTP сервера. Внимание активация режима "Use anticipation
window" в некоторых случаях может привести к ошибкам. С этими
настройками TFTP сервер готов к работе.
Настройке DHCP сервера (TFTPD32)
Ниже перечислены параметры DHCP сервера.
-
IP Pool starting address
-
указываю с какого IP адреса будет начинаться диапазон выдачи IP
адресов. Так как моя сетевая карта имеет IP адрес 192.168.200.1 (server
interface), то началом диапазона будет являться адрес 192.168.200.10
-
Size of pool
-
длина диапазона динамических IP адресов. Я выбрал 1. Если необходимо одновременно устанавливать Windows XP на несколько компьютеров, то это число необходимо увеличить
-
Boot File
-
Имя загружаемого файла. В каталоге E:\NETBOOT\WINXPSP2 находится два файла загрузчика startrom.com и startrom.n12. Первый файл (startrom.com) для начало процесса инсталляции потребует нажатия F12, второй файл (startrom.n12) не требует. Я выбрал файл startrom.n12
-
Mask
-
Указал маску подсети 255.255.255.0
Все настройки DHCP сервера изображены на рисунке:
Настройка программы RIS-LINUX
Во время установки Windows XP должна получить информацию, какой драйвер для сетевой платы она должна использовать. Эту информация предоставляет служба BINL. В качестве BINL я буду использовать программу ris-linux. Эта программа написана на языке Python и по этому необходимо еще установить интерпретатор этого языка в Windows XP. В качестве интерпретатора буду использовать Python.
Распаковываю ris-linux в каталог E:\NETBOOT\RIS-LINUX. Теперь необходимо сформировать базу ответов. Для этого выполняю команду: infparser.py E:\NETBOOT\WINXPSP2\DRIVERS. Если все удачно то программа infparser.py выведет на экран Compiled xxx drivers, где xxx количество обработаных драйверов. Теперь запускаю BINL, с помощью программы binlsrv.py.
Автоматизация процесса установки. Файл ответов winnt.sif
Для автоматической установки в каталоге E:\NETBOOT\WINXPSP2 создаю файл winnt.sif. Я буду использовать файл winnt.sif который был создан в статье Создание диска unattended (автоматической) установки Windows XP, но дополню следующими строками.
В секцию [data] необходимо добавить
OriSrc="\\192.168.200.1\WINXPSP2\INSTALL\I386" OriTyp="4"
Создать новую секции [SetupData]. Секция [SetupData] должна содержать следующие строки.
OsLoadOptions = "/noguiboot /fastdetect" SetupSourceDevice = "\Device\LanmanRedirector\192.168.200.1\WINXPSP2\INSTALL"
Создать новую секцию [RemoteInstall], со следующим содержимым
Repartition = No UseWholeDisk = No
В итоге файл ответов winnt.sif примет следующий вид.
[data] AutoPartition=0 MsDosInitiated=1 UnattendedInstall="Yes" floppyless="1" LocalSourceOnCD=1 OriSrc="\\192.168.200.1\WINXPSP2\INSTALL\I386" OriTyp="4"
[SetupData] OsLoadOptions = "/noguiboot /fastdetect" SetupSourceDevice = "\Device\LanmanRedirector\192.168.200.1\WINXPSP2\INSTALL"
[RemoteInstall] Repartition = No UseWholeDisk = No
[Unattended] AutoActivate=No DUDisable = Yes CrashDumpSetting=0 DriverSigningPolicy=Ignore FactoryMode=No FileSystem=* Repartition=No OemPreinstall=Yes OemSkipEula=Yes TargetPath=\windows UnattendMode=FullUnattended UnattendSwitch=Yes WaitForReboot=No NtUpgrade=No OverwriteOemFilesOnUpgrade=No
[UserData] FullName = "USER" OrgName = "HOME" ComputerName = * ProductKey="xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
[RegionalSettings] LanguageGroup = 1,5 SystemLocale = 00000419 UserLocale = 00000419 InputLocale = 0409:00000409,0419:00000419
[GuiUnattended] OemSkipWelcome = 1 OemSkipRegional = 1 TimeZone = 130 AdminPassword = "*" AutoLogon = Yes AutoLogonCount=1 EncryptedAdminPassword=No
[Display] BitsPerPel = 16 XResolution = 800 YResolution = 600 VRefresh = 60
[WindowsFirewall] Profiles = WindowsFirewall.TurnOffFirewall
[WindowsFirewall.TurnOffFirewall] Mode = 0
[TerminalServices] AllowConnections=0
[PCHealth] RA_AllowToGetHelp=0
[GuiRunOnce] "%SystemDrive%\post_install\runonce.cmd"
Ну вот и все. Теперь можно приступать к
установке операционной системы. Если же в процессе установки возникли
ошибки, то рекомендую обратить внимание на следующий раздел.
P.S. Мне будет интересно узнать Выше мнение. Высказать его можно на форуме.
Борьба с ошибками
Здесь я буду публиковать способы решения проблем, которые могут возникнуть во время установки Windows XP по сети. Если Вы не нашли ответ на ваш вопрос, то смело задавайте его на форуме.
Вопросы
-
Я
устанавливаю Windows XP, а мне выдается ошибка: "The operating system
image you selected does not contain the necessary drivers for you
network adapter. Try selecting a different operating system image. If
the problem persist, contact you system administrator" ("Выбранный
образ операционной системы не содержит необходимых драйверов для
имеющегося сетевого адаптера. Попробуйте выбрать другой образ
операционной системы. Если это не поможет, обратитесь к системному
администратору").
-
У
меня не получается устанавить Windows XP, выдается ошибка: "File
pcntpci5.sys caused an unexpected error (21) at line 3788 in
d:\xpsprtm\base\boot\setup\setup.c" ("Файл pcntpci5.sys вызвал
неожиданную ошибку (21) в строке 3788 из
d:\xpsprtm\base\boot\setup\setup.c").
-
Я
устанавливаю русскую Windows XP, а у меня после загрузки всех
необходимых драйверов черный экран и компьютер зависает. В английской
Windows XP компьютер зависает, но экран синий.
-
После
загрузки всех необходимых драйверов установка Windows XP прерывается
BSOD (синим экран смерти) PROCESS1_INITIALIZATION_FAILED (STOP
0x0000006B).
Ответы
1. Я устанавливаю Windows
XP, а мне выдается ошибка: "The operating system image you selected
does not contain the necessary drivers for you network adapter. Try
selecting a different operating system image. If the problem persist,
contact you system administrator" ("Выбранный образ операционной
системы не содержит необходимых драйверов для имеющегося сетевого
адаптера. Попробуйте выбрать другой образ операционной системы. Если
это не поможет, обратитесь к системному администратору"). Смотрите
рисунок 1 для английской версии:
и
Рисунок 2 для русской версии:
соответственно.
Причина
Вероятно, в базе binlsrv.py (devlist.cache) отсутствует информация о
сетевом адаптере. На рисунке 8:
изображено, что Windows XP запрашивает драйвер с PnP идентификатором PCI\VEN_1022&DEV_2000, но в базе binlsrv.py (devlist.cache) информации об устройстве с PnP идентификатором PCI\VEN_1022&DEV_2000 отсутствует. Об этом говорит надпись "Driver not found".
Решение
Для решения этой проблемы необходимо найти драйвер с PnP
идентификатором PCI\VEN_1022&DEV_2000 и включить его в базу
binlsrv.py (devlist.cache) с помощью команды infparser.py <каталог с
новым драйвером>.
2. У меня не получается
устанавить Windows XP, выдается ошибка: "File pcntpci5.sys caused an
unexpected error (21) at line 3788 in
d:\xpsprtm\base\boot\setup\setup.c" ("Файл pcntpci5.sys вызвал
неожиданную ошибку (21) в строке 3788 из
d:\xpsprtm\base\boot\setup\setup.c"). Смотрите Рисунок 3 для русской
версии
и Рисунок 4 для английской:
соответственно.
Причина
Вероятно, в каталоге I386 отсутствует файл драйвера (*.sys) для сетевого адаптера или один из его компонентов. На рисунке 9
изображено, что Windows XP запрашивает драйвер с PnP
идентификатором PCI\VEN_1022&DEV_2000. В базе binlsrv.py
(devlist.cache) есть информация о том какой драйвер необходимо
использовать "[S] drv: pcntpci5.sys – Len 0x15 (21)". Но программа
установки не может его загрузить о чем и сообщает.
Решение
Скопировать необходимый драйвер (pcntpci5.sys) в каталог I386.
3.
Я устанавливаю русскую Windows XP, а у меня после загрузки всех
необходимых драйверов черный экран и компьютер зависает. В английской
Windows XP компьютер зависает, но экран синий. Смотрите рисунок 5 для
русской версии:
и рисунок 6 для английской:
соответственно.
Причина
Наиболее вероятная причина зависания компьютера на этом этапе связано с
невозможностью анонимного подключения к сетевому ресурсу указанного в
файле winnt.sif в параметре SetupSourceDevice.
Решение
Необходимо убедиться, что
учетная запись Guest (Гость) включена. Также убедится, что в Local
Security Policy (Локальная политика безопасности), вызывается с помощью
команды mmc %SystemRoot%\system32\secpol.msc,
разрешен доступ к компьютеру по сети для учетной записи Guest (Гость).
Одним из пунктов ограничивающим доступ и установленной по умолчанию
является Local Policies (Локальные Политики) -> User Right
Assignments (Назначение прав пользователя) -> Deny access to the
computer from the network (Отказ в доступе к компьютеру из сети).
4. После загрузки всех
необходимых драйверов установка Windows XP прерывается BSOD (синим
экран смерти) PROCESS1_INITIALIZATION_FAILED (STOP 0x0000006B).
Смотрите рисунок 7:
Причина
Вероятно, инсталляция Windows XP
находится на разделе с файловой системой NTFS. В свойствах Security
(Безопасность) каталога отсутствуют разрешение на чтение для группы
Everyone (Все).
Решение
В свойствах каталога в Security (Безопасность) разрешить чтение группе Everyone (Все).
|