Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Установка Windows 7 поверх PXE из Linux без использования WAIK

Оригинал: "Install Windows 7 over PXE from Linux without WAIK"
Автор: Carl Thijssen
Перевод: Н.Ромоданов
Дата перевода: март 2014 г.

1. Обзор

1.1. Введение

В статье приводится описание, как из Linux по сети (PXE) развернуть для работы систему Windows 7. Не нужно пользоваться «рабочим компьютером» с установленным пакетом WAIK (Windows Automated Installation Kit - пакет автоматической установки Windows), нужна лишь система Linux. Я использую 32-битный инсталлятор Centos 5.3, но если вы разбираетесь в том, что делаете, то я уверен, что вы сможете выполнить эту работу на том варианте Linux, который вы лично предпочитаете использовать. Для этого вам нужно следующее:

  • сервер tftp
  • сервер dhcp
  • сервер samba
  • пакет ris для linux
  • PXELinux
  • hivex
  • мой скрипт (wimlib/bcdedit.pl/getbcdlocation.sh)

Последние четыре пакета, объединенные вместе в один пакет, вы можете скачать с сайта www.ultimatedeployment.org. Скачайте пакет отсюда.

Все остальное либо есть в вашем дистрибутиве Linux, либо может быть достаточно просто установлено с помощью менеджера пакетов вашего дистрибутива Linux (um, apt-get и т.д.).

Загрузите пакет и распакуйте его корневой каталог системы. Будет создан каталог /work, в котором все будет происходить. В остальной части этого документа я предполагаю, что вы это уже сделали и что там же находятся скрипты и конфигурационные файлы. Конечно, вы всегда можете распаковать его в другое место, куда захотите ...

Отказ от ответственности: Настоящий подход все еще находится в стадии разработки, и в нем могут быть (очевидные) ошибки. В действительности здесь описывается, как я развернул систему Windows 7 для работы в UDA. Это моя рабочая среда, поэтому дайте мне знать, если у вас есть исправления или другие советы и подсказки.

1.2. Что должны получить

Как только вы закончите подготавливать вашу файловую систему, она должна выглядеть следующим образом. Большинство файлов уже заранее подготовлены в архиве, но, конечно, не те, которые я не должен был самостоятельно распространять, например, двоичные файлы загрузки windows. В данном руководстве будет рассказано, откуда их получить или как их найти на вашем носителе с инсталлятором windows 7.

/work/tftproot
/work/tftproot/pxelinux.0
/work/tftproot/pxelinux.cfg/default
/work/tftproot/pxeboot.com
/work/tftproot/boot.sdi
/work/tftproot/bootmgr.exe
/work/tftproot/winpe.wim

/work/tftproot/system1/bcd
/work/tftproot/system1/wdsnbp.0

/work/tftproot/system2/bcd
/work/tftproot/system2/wdsnbp.0

/work/sambashare
/work/sambashare/win7
/work/sambashare/system1.xml
/work/sambashare/system2.xml

/work/bin
/work/bin/bcdedit.pl
/work/bin/wimextract
/work/bin/wiminfo
/work/bin/updatewim
/work/bin/wimxmlinfo
/work/bin/binlsvr.py
/work/bin/binl
/work/bin/getbcdlocation.sh

/work/drivers
/work/drivers/netamd.inf
/work/drivers/pxntpci5.sys

/work/wim/actionfile.txt
/work/wim/install.cmd
/work/wim/winpeshl.ini

/work/conf/dhcpd.conf
/work/conf/tftpd.conf
/work/conf/smb.conf

/work/log
/work/log/tftpd.log

/work/doc/default.css
/work/doc/win7pxelinux1.html
/work/doc/win7pxelinux2.html
/work/doc/win7pxelinux3.html
/work/doc/win7pxelinux4.html
/work/doc/win7pxelinux5.html

1.3. Ссылки

Я нашел в сети интересную информацию, объединил ее и при помощи некоторых проб и ошибок придумал этот метод. Вот некоторые ссылки для получения дополнительной информации.

Дайте мне знать, если вы найдете более интересные статьи! (пожалуйста, сделайте это в форуме на www.ultimatedeployment.org).

2. Конфигурирование и запуск сервисов

2.1 dhcp

Запустите сервер dhcp следующим образом

/work/init.d/dhcpd start

Файл dhcpd.conf должен выглядеть приблизительно следующим образом. Если захотите, вы можете внести изменения в ip-адреса, выделенные красным цветом:

log-facility local6;

ddns-update-style ad-hoc;
ddns-hostname = concat("station-",binary-to-ascii(10,8,"-",leased-address));
option host-name = config-option server.ddns-hostname;

next-server 192.168.178.105 ;

if substring ( option vendor-class-identifier, 0, 9) = "PXEClient"
{
  filename "pxelinux.0" ;
  next-server 192.168.178.105 ;
}

subnet 192.168.178.0 netmask 255.255.255.0 {
  option routers 192.168.178.105;
  option domain-name-servers 192.168.178.105 ;
  range 192.168.178.150 192.168.178.200 ;
  max-lease-time 300;
}

Файл pxelinux.0 является загрузочным файлом, который запускает весь процесс pxe. Когда клиент загружается, этот файл загружается первым и, в свою очередь, загружает конфигурационный файл pxelinux.cfg/default. Этот файл выглядит следующим образом:

default menu.c32
prompt 0
noescape 1
allowoptions 0
menu title Choose the system to install
menu color tabmsg 37;40      #80ffffff #00000000
menu color hotsel 30;47      #40000000 #20ffffff
menu color sel 30;47      #40000000 #20ffffff
menu color scrollbar 30;47      #40000000 #20ffffff
menu width 80
menu margin 22
menu passwordmargin 26
menu rows 6
menu tabmsgrow 15
menu cmdlinerow 15
menu endrow 24
menu passwordrow 12
menu timeoutrow 13
menu vshift 6
menu passprompt Enter Password:

label LOCALBOOT
  menu label ^Boot local disk
  localboot 0
  timeout 100

label system1
  menu label system1
  kernel system1/wdsnbp.0

label system2
  menu label system2
  kernel system2/wdsnbp.0

2.2 tftpd

Запустите демон tftp следующим образом

/work/init.d/tftpd start

Эта команда запускает tftpd со следующими параметрами:

/usr/sbin/in.tftpd -l -v -v -v -m /work/conf/tftpd.conf -s /work/tftproot

Конфигурационный файл /work/conf/tftpd.conf лишь заменяется обратный слэш на прямой слэш:

rg \\ /

2.3 samba

Запустите сервер samba следующим образом

/work/init.d/smb start

Убедитесь, что каталог /work/sambashare экспортируется как sambashare REMINST. Это важная часть файла smb.conf:

[REMINST]
browsable = true
read only = no
guest ok = yes
path = /work/sambashare

2.4 binl

Запустите сервер binl следующим образом

/work/init.d/binl start

Эта команда запустит сервис binl со следующими параметрами:

/work/bin/binlsrv.py -d -l /work/log/tftpd.log /work/conf/devlist.cache

Здесь журнальный файл важен, поскольку в дальнейшем он должен быть прочитан. Сервис binl определяет, какой загрузочный файл клиент скачал последним, для этого выполняется следующий скрипт. Скрипт ищет журнальный файл tftpd и возвращает место, где расположен файл bcd, который находится в том же самом каталоге, что и найденный файл wdsnbp.com. Это необходимо, т.к. мы хотим знать, какой вариант был выбран в меню загрузки PXE.

#!/bin/sh

IPADDR=$1
MACADDR=$2

LOGFILE=/work/log/tftpd.log

tail -1000 $LOGFILE | \
  grep "RRQ from $IPADDR " | \
  grep wdsnbp.0 | \
  tail -1 | \
  awk '{print $2 }' FS=\/

3. Подготовка загрузочных файлов Windows

3.1. Импорт загрузочного файла, используемого по умолчанию

Прежде всего нам нужно смонтировать установочный DVD. Я смею предположить, что он находится в плейере DVD, известным как /dev/cdrom. Вы должны смонтировать его следующим образом:

  mount -t udf /dev/cdrom /work/sambashare/win7

Если у вас есть файл iso, то вы должны сделать что-то вроде следующего:

  mount -o loop -t udf /work/windows7.iso /work/sambashare/win7

Как только вы это сделаете, файлы, расположенные на DVD (внутри образа), можно будет опубликовать с помощью samabashare. Затем нам нужно извлечь отдельные файлы из файла boot.wim, который находится на DVD в каталоге /sources. Они должны быть в самом конце каталога /work/tftproot, поэтому мы сначала выполняем следующее:

  cd /work/tftproot
  /work/bin/wimextract /work/sambashare/win7/sources/boot.wim //windows/boot/pxe pxeboot.n12
  mv pxeboot.n12 pxeboot.com
  /work/bin/wimextract /work/sambashare/win7/sources/boot.wim //windows/boot/pxe bootmgr.exe
  /work/bin/wimextract /work/sambashare/win7/sources/boot.wim //windows/boot/pxe wdsnbp.com
  cp /work/sambashare/win7/boot/boot.sdi /work/tftproot

Обратите внимание, что мы извлекли файл pxeboot.n12, а затем переименовали его в pxeboot.com!

3.2. Подготовка файла WIM

Что ж, теперь нам нужно создать файл winpe.wim. Мы делаем следующее:

3.2.1. Создаем файл winpehl.ini

В нем должно быть что-то вроде следующего:

[LaunchApps]
%SYSTEMDRIVE%\sources\new\install.cmd
%SYSTEMDRIVE%\windows\system32\cmd.exe

Убедитесь, что он имеет формат dos (а не формат unix)

unix2dos winpeshl.ini

3.2.2. Создаем скрипт install.cmd

Создайте скрипт install.cmd, который позаботится о установке сразу, как будет запущен Winpe:

3.2.3. Добавляем сетевые драйверы

Идем дальше. Сетевые драйверы являются трудной темой. Вам нужны будут сетевые драйверы, которые поставляются для вашей сетевой карты, их можно скачать с сайта поставщика сетевой карты, а некоторые из них могут быть уже в дистрибутиве Windows 7 WINPE на инсталляционном носителе. Я предполагаю, что вы будете с помощью PXE (загрузка по сети) загружать виртуальную машину vmware с сетевой картой AMD (которая во многих случаях, является сетевой картой, используемой по умолчанию для новой виртуальной машины).

Если вы загрузили виртуальную машину и, когда загрузка идет из сети, то сообщается о сетевой карте Intel E1000, вам придется остановить виртуальную машину, удалить следующие строки из файла .vmx и перезапустить виртуальную машину.

ethernet0.virtualDev = "e1000"

Если вы теперь запустите виртуальную машину, то вам будет сообщено, что есть сетевая карта AMD ... Так что теперь нам нужно драйвера windows PE для этой сетевой карты AMD. Есть станица, на которой вы можете узнать откуда их можно скачать:

cp netamd.inf   /work/wim/
cp pcntpci5.sys /work/wim/

Для windows PE вы можете использовать драйвера windows XP. В общем, вам нужен файл .inf и файл .sys. Файл inf обычно содержит список файлов идентификаторов сетевое устройств и соответствующих им драйверов .sys). Если вы не знаете, сетевая с каким идентификатором используется в вашей системе, то просто скопируйте в каталог /work/wim несколько драйверов (файлы inf и sys).

3.2.4. Создаем файл actionfile

Ниже указаны действия, которые нам нужно выполнить, когда из файла boot.wim создается файл winpe.wim. Вы можете захотеть отредактировать список драйверов, которые указываются в файле /work/wim/actionfile.txt. Этот файл может выглядеть следующим образом:

rename //setup.exe setup.new
rename //sources/setup.exe setup.new
add //windows/system32 winpeshl.ini
mkdir //sources new
add //sources/new netamd.inf
add //sources/new pcntpci5.sys
add //srouces/new install.cmd

3.2.5. Создаем файл WIM

Теперь мы можем создать файл winpe.wim

cd /work/wim /work/bin/updatewim /work/sambashare/win7/sources/boot.wim /work/tftproot/winpe.wim /work/wim/actionfile.txt

3.3. Создание загрузочных файлов для конкретных систем

Сначала нам нужно инструментальное средство hivex. Архивы RPM, которые я использую, находятся в этом пакете.

cd /work/rpm
rpm -ivh hivex*

Возможно, что для вашего любимого дистрибутива Linux вам потребуются другие пакеты с дистрибутивами. Нам нужны эти инструментальные средства для того, чтобы иметь возможность отредактировать файлы windows BCD (Boot Cofiguration Data — конфигурационные данные для загрузки). Теперь мы выполняем три операции для обеих систем, которые мы хотим установить дистанционно:

  • Копируем данные Boot Cofiguration Data с установочного DVD в загрузочный каталог систем pxe
  • Изменяем их для того, чтобы получить PXE BCD
  • Копирует в этот каталог программу сетевой загрузки сервиса развертывания Windows (wdsnbp.com) и также и переименовываем ее в wdsnbp.0
cp /work/sambashare/win7/boot/bcd /work/tftproot/system1
  /work/bin/bcdedit.pl /work/tftproot/system1/bcd /winpe.wim /boot.sdi INFO=10.0.0.1:system1
  cp /work/tftproot/wdsnbp.com /work/tftproot/system1/wdsnbp.0

  cp /work/sambashare/win7/boot/bcd /work/tftproot/system2
  /work/bin/bcdedit.pl /work/tftproot/system2/bcd /winpe.wim /boot.sdi INFO=10.0.0.1:system2
  cp /work/tftproot/wdsnbp.com /work/tftproot/system2/wdsnbp.0

Вы можете легко выполнить эти операции для более, чем двух систем ...

4. Подготовка файлов автоматической установки

4.1. Поддерживаемый язык

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

cat /work/sambashare/win7/sources/lang.ini

Вы должны найти что-то вроде следующего

[Available UI Languages]
en-US  = 3

[Fallback Languages]
en-US = en-us

По-видимому, на этом DVD есть язык en-US (и еще en-us).

4.2. Определение версии ОС

Теперь нам нужно проверить, какая версия поддерживается установочным DVD

cat /work/sambashare/win7/sources/ei.cfg

Вы должны получить нечто вроде следующего:

[EditionID]
Ultimate
[Channel]
OEM
[VL]
0

Так что это Windows 7 Ultimate OEM DVD с лицензией (non Volume). Нам нужна эта информация для того, чтобы иметь возможность выбрать образ в следующем разделе:

4.3. Выбор образа подходящего инсталлятора

Сначала мы сделаем дамп информации XML файла install.wim:

/work/bin/wimxmlinfo /work/sambashare/win7/install.wim | sed 's/\(<\/[A-Z]*>\)/\1\n/g' | sed 's/>\n

Вы должны получить приблизительно следующее:

<WIM>
<TOTALBYTES>2073978321</TOTALBYTES>
<IMAGE INDEX="1">
<DIRCOUNT>9350</DIRCOUNT>
<FILECOUNT>46415</FILECOUNT>
<TOTALBYTES>7661093433</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x01CA0443</HIGHPART>
<LOWPART>0x6568BDF8</LOWPART>
</CREATIONTIME>
<LASTMODIFICATIONTIME>
<HIGHPART>0x01CA0463</HIGHPART>
<LOWPART>0x5D745FDC</LOWPART>
</LASTMODIFICATIONTIME>
<WINDOWS>
<ARCH>0</ARCH>
<PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
<EDITIONID>Starter</EDITIONID>
<INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
<HAL>acpiapic</HAL>
<PRODUCTTYPE>WinNT</PRODUCTTYPE>
<PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
<LANGUAGES>
<LANGUAGE>nl-NL</LANGUAGE>
<DEFAULT>nl-NL</DEFAULT>
</LANGUAGES>
<VERSION>
<MAJOR>6</MAJOR>
<MINOR>1</MINOR>
<BUILD>7600</BUILD>
<SPBUILD>16385</SPBUILD>
<SPLEVEL>0</SPLEVEL>
</VERSION>
<SYSTEMROOT>WINDOWS</SYSTEMROOT>
</WINDOWS>
<NAME>Windows 7 STARTER</NAME>
<DESCRIPTION>Windows 7 STARTER</DESCRIPTION>
<FLAGS>Starter</FLAGS>
<HARDLINKBYTES>2918646231</HARDLINKBYTES>
<DISPLAYNAME>Windows 7 Starter</DISPLAYNAME>
<DISPLAYDESCRIPTION>Windows 7 Starter</DISPLAYDESCRIPTION>
</IMAGE>
<IMAGE INDEX="2">
<DIRCOUNT>9359</DIRCOUNT>
<FILECOUNT>46487</FILECOUNT>
<TOTALBYTES>7681290464</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x01CA0443</HIGHPART>
<LOWPART>0x6568BDF8</LOWPART>
</CREATIONTIME>
<LASTMODIFICATIONTIME>
<HIGHPART>0x01CA0463</HIGHPART>
<LOWPART>0x7466EEDC</LOWPART>
</LASTMODIFICATIONTIME>
<WINDOWS>
<ARCH>0</ARCH>
<PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
<EDITIONID>HomeBasic</EDITIONID>
<INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
<HAL>acpiapic</HAL>
<PRODUCTTYPE>WinNT</PRODUCTTYPE>
<PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
<LANGUAGES>
<LANGUAGE>nl-NL</LANGUAGE>
<DEFAULT>nl-NL</DEFAULT>
</LANGUAGES>
<VERSION>
<MAJOR>6</MAJOR>
<MINOR>1</MINOR>
<BUILD>7600</BUILD>
<SPBUILD>16385</SPBUILD>
<SPLEVEL>0</SPLEVEL>
</VERSION>
<SYSTEMROOT>WINDOWS</SYSTEMROOT>
</WINDOWS>
<NAME>Windows 7 HOMEBASIC</NAME>
<DESCRIPTION>Windows 7 HOMEBASIC</DESCRIPTION>
<FLAGS>HomeBasic</FLAGS>
<HARDLINKBYTES>2933760608</HARDLINKBYTES>
<DISPLAYNAME>Windows 7 Home Basic</DISPLAYNAME>
<DISPLAYDESCRIPTION>Windows 7 Home Basic</DISPLAYDESCRIPTION>
</IMAGE>
<IMAGE INDEX="3">
<DIRCOUNT>9576</DIRCOUNT>
<FILECOUNT>47496</FILECOUNT>
<TOTALBYTES>8123123919</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x01CA0443</HIGHPART>
<LOWPART>0x6568BDF8</LOWPART>
</CREATIONTIME>
<LASTMODIFICATIONTIME>
<HIGHPART>0x01CA0463</HIGHPART>
<LOWPART>0x8F7022C4</LOWPART>
</LASTMODIFICATIONTIME>
<WINDOWS>
<ARCH>0</ARCH>
<PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
<EDITIONID>HomePremium</EDITIONID>
<INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
<HAL>acpiapic</HAL>
<PRODUCTTYPE>WinNT</PRODUCTTYPE>
<PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
<LANGUAGES>
<LANGUAGE>nl-NL</LANGUAGE>
<DEFAULT>nl-NL</DEFAULT>
</LANGUAGES>
<VERSION>
<MAJOR>6</MAJOR>
<MINOR>1</MINOR>
<BUILD>7600</BUILD>
<SPBUILD>16385</SPBUILD>
<SPLEVEL>0</SPLEVEL>
</VERSION>
<SYSTEMROOT>WINDOWS</SYSTEMROOT>
</WINDOWS>
<NAME>Windows 7 HOMEPREMIUM</NAME>
<DESCRIPTION>Windows 7 HOMEPREMIUM</DESCRIPTION>
<FLAGS>HomePremium</FLAGS>
<HARDLINKBYTES>3313218351</HARDLINKBYTES>
<DISPLAYNAME>Windows 7 Home Premium</DISPLAYNAME>
<DISPLAYDESCRIPTION>Windows 7 Home Premium</DISPLAYDESCRIPTION>
</IMAGE>
<IMAGE INDEX="4">
<DIRCOUNT>9632</DIRCOUNT>
<FILECOUNT>47924</FILECOUNT>
<TOTALBYTES>8004750393</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x01CA0443</HIGHPART>
<LOWPART>0x6568BDF8</LOWPART>
</CREATIONTIME>
<LASTMODIFICATIONTIME>
<HIGHPART>0x01CA0463</HIGHPART>
<LOWPART>0x9DC7BC24</LOWPART>
</LASTMODIFICATIONTIME>
<WINDOWS>
<ARCH>0</ARCH>
<PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
<EDITIONID>Professional</EDITIONID>
<INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
<HAL>acpiapic</HAL>
<PRODUCTTYPE>WinNT</PRODUCTTYPE>
<PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
<LANGUAGES>
<LANGUAGE>nl-NL</LANGUAGE>
<DEFAULT>nl-NL</DEFAULT>
</LANGUAGES>
<VERSION>
<MAJOR>6</MAJOR>
<MINOR>1</MINOR>
<BUILD>7600</BUILD>
<SPBUILD>16385</SPBUILD>
<SPLEVEL>0</SPLEVEL>
</VERSION>
<SYSTEMROOT>WINDOWS</SYSTEMROOT>
</WINDOWS>
<NAME>Windows 7 PROFESSIONAL</NAME>
<DESCRIPTION>Windows 7 PROFESSIONAL</DESCRIPTION>
<FLAGS>Professional</FLAGS>
<HARDLINKBYTES>3179671026</HARDLINKBYTES>
<DISPLAYNAME>Windows 7 Professional</DISPLAYNAME>
<DISPLAYDESCRIPTION>Windows 7 Professional</DISPLAYDESCRIPTION>
</IMAGE>
<IMAGE INDEX="5">
<DIRCOUNT>9662</DIRCOUNT>
<FILECOUNT>48073</FILECOUNT>
<TOTALBYTES>8162882068</TOTALBYTES>
<CREATIONTIME>
<HIGHPART>0x01CA0443</HIGHPART>
<LOWPART>0x6568BDF8</LOWPART>
</CREATIONTIME>
<LASTMODIFICATIONTIME>
<HIGHPART>0x01CA0463</HIGHPART>
<LOWPART>0xACBCB034</LOWPART>
</LASTMODIFICATIONTIME>
<WINDOWS>
<ARCH>0</ARCH>
<PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
<EDITIONID>Ultimate</EDITIONID>
<INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
<HAL>acpiapic</HAL>
<PRODUCTTYPE>WinNT</PRODUCTTYPE>
<PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
<LANGUAGES>
<LANGUAGE>nl-NL</LANGUAGE>
<DEFAULT>nl-NL</DEFAULT>
</LANGUAGES>
<VERSION>
<MAJOR>6</MAJOR>
<MINOR>1</MINOR>
<BUILD>7600</BUILD>
<SPBUILD>16385</SPBUILD>
<SPLEVEL>0</SPLEVEL>
</VERSION>
<SYSTEMROOT>WINDOWS</SYSTEMROOT>
</WINDOWS>
<NAME>Windows 7 ULTIMATE</NAME>
<DESCRIPTION>Windows 7 ULTIMATE</DESCRIPTION>
<FLAGS>Ultimate</FLAGS>
<HARDLINKBYTES>3336944182</HARDLINKBYTES>
<DISPLAYNAME>Windows 7 Ultimate</DISPLAYNAME>
<DISPLAYDESCRIPTION>Windows 7 Ultimate</DISPLAYDESCRIPTION>
</IMAGE>
</WIM>

Поскольку мы знаем с каким языком и какой версией windows 7 мы имеем дело, мы можем отредактировать файлы автоматической установки. Я выделил третий образ, поскольку это версия Ultimate Edition, которую мы нашли в предыдущем разделе. Это Architecture 0, что означает - x86.

4.4. Создаем/редактируем файлы автоматической установки

vi /work/sambashare/system1.xml
vi /work/sambashare/system2.xml

Файл автоматической установки может выглядеть, например, следующим образом (вероятно, вы захотите изменить значения, выделенные красным цветом):

Итак, как только вы это сделаете, вы должны быть в состоянии загрузить (загрузка pxe) новую систему, и вы должны иметь возможность выбирать из двух систем, которые вы настроили для автоматического развертывания. Если этого сделать не удастся, то, пожалуйста, перейдите к следующему разделу «Решение возникших проблем» и поделитесь своим опытом на форуме на сайте ultimatedeployment.org.

5. Решение возникших проблем

Процесс загрузки

Ниже приведен упрощенный обзор процесса загрузки, через который проходят клиенты PXE, когда используется этот метод.

  • C обозначает клиентскую систему (система, которая должна быть развернута)
  • S обозначает сервер (систему, на которой находятся конфигурационные файлы и на которой запущены сервисы, позволяющие установить клиентскую систему)
C->S запрашивает по DHCP адрес IP
S->C Запрос адреса IP подтверждается и клиенту предоставляется (свободный) адрес ip
C->S запрашивает по DHCP загрузочный сервер/файл

S->C DHCP предоставляет загрузочный сервер/файл SERVER:/boot/myserver/wdsnbp.0
C->S запрашивает по TFTP загрузочный файл /boot/myserver/wdsnbp.0
S->C предоставляет по TFTP файл /boot/myserver/wdsnbp.0
C->S делает запрос сервису BINL(где можно найти файл BCD?)

Сервер ищет в файле находит в tftpd.log, откуда клиент загрузил свой файл wdsnbp и предполагает, что файл BCD находится в том же самом каталоге.

S->C делает запрос сервису BINL о файлах /boot/pxeboot.com и /boot/myserver/bcd

C->S предоставляет по TFTP файл /boot/pxeboot.com
S->C предоставляет по TFTP файл /boot/pxeboot.com
C->S запрашивает по TFTP файл /boot/mysystem/bcd
S->C предоставляет по TFTP файл /boot/mysystem/bcd

Клиент читает файл BCD и определяет, откуда нужно скачивать файлы boot.sdi и winpe.wim

C->S запрашивает по TFTP файл /boot/boot.sdi
S->C предоставляет по TFTP файл /boot/boot.sdi

C->S запрашивает по TFTP файл /boot/winpe.wim
S->C предоставляет по TFTP файл /boot/winpe.wim

Затем клиент загружается в Windows PE. Когда это будет сделано, то от нас потребуется подготовить следующее:

  1. Найти в реестре адрес IP сервера загрузки
  2. Найти в реестре конкретные данные о загрузке
  3. Загрузить сетевые драйверы и запустить сервис сети
  4. Переместить файлы setup.exe и sources\setup.exe на прежнее место
  5. Подключиться через Samba к серверу загрузки
  6. Разбить диск на разделы с помощью файла diskpart, который можно найти через samba на сервере загрузки
  7. Переместить файлы setup.exe и sources\setup.exe на прежнее место
  8. Удалить из реестра ответ PXE binl для того, чтобы предотвратить установку WDS вместо обычной установки
  9. Запустить setup.exe с файлом автоматической установки, который можно найти на сервере загрузки

Журнальные файлы

Когда возникают проблемы, то, очевидно, что нужно заглянуть в следующие журнальные файлы:

  • журнальный файл tftpd (/work/log/tftpd.log)
  • журнальный файл dhcpd (/var/log/messages)
  • журнальный файл binl (/work/log/binl.log)

Далее ...

Если я найду дополнительную информацию, то я ее добавлю.