Мастерская

PXE Win Install: установка Windows 7 по сети

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

Ранее мы уже познакомились с процессом массированного разворачивания по сети готового образа жёсткого диска с предустановленной Windows 7 сразу на множество машин. Использовали мы для этого связку из DRBL и Clonezilla. Ключевой недостаток данного подхода заключается в отсутствии гибкости, связанном с вынужденным ограничением на использование однотипной конфигурации клиентских ПК. Развивая тему сетевой загрузки, мы рассмотрели создание универсального PXE-реаниматора. В этом случае ПК при старте подгружает с сервера в оперативную память live-образ той или иной ОС и работает с ним.

Аналогичным образом мы можем загрузить по сети среду предустановки Windows (PE), подмонтировать расшаренную папку с установочными файлами и запустить оттуда инсталлятор. Похожим образом работают и фирменные сервисы Microsoft RIS или WDS, однако они требуют наличия Windows Server. В случае не очень большого числа клиентских машин можно обойтись бесплатными решениями. Пример «классической» реализации такой схемы мы и рассмотрим. На одном из компьютеров с Windows Vista/7 будет поднят DHCP/TFTP/SMB-сервер.

О требованиях к железу уже говорилось в предыдущих материалах. Тем не менее ещё раз кратко пробежимся по ним. Во-первых, в BIOS всех компьютеров должна быть включена сетевая загрузка. Во-вторых, все машины необходимо на время объединить в изолированную локальную сеть, желательно гигабитную. Естественно, их конфигурация должна удовлетворять требованиям 32-битной Windows 7, так как установку именно этой ОС мы и будем рассматривать. Но в общих чертах описываемый метод подойдёт и для Windows Vista. Про «восьмёрку», пожалуй, говорить ещё рано.

Нам опять понадобится Windows Automated Installation Kit (WAIK). Скачиваем ISO-образ, распаковываем или монтируем его и устанавливаем этот набор утилит. В главном меню выбираем Microsoft Windows AIK → Deployment Tools Command Prompt. Перед нами откроется консоль, в которой надо ввести следующую команду:

copype.cmd x86 C:\WinPE
 

Эта команда копирует в каталог C:\WinPE файлы, необходимые для создания образа с предустановочным окружением 32-разрядной Windows 7. Для 64-битной версии надо указать параметр amd64 вместо x86. Сразу же создайте ещё одну папку C:\TFTP\, которая будет корневой для TFTP-сервера, а в ней сделайте директорию Boot. В последней будут храниться загрузочные файлы. Чтобы получить оные, нужно смонтировать базовый wim-образ Windows PE и скопировать их оттуда.

imagex /mountrw winpe.wim 1 mount
copy mount\Windows\Boot\PXE\*.* C:\TFTP\Boot
 

Команда imagex всего лишь распаковывает файлы из wim-образа в подпапку mount. Их можно отредактировать или, к примеру, добавить свои, а потом снова упаковать в единый архив. Этим займёмся чуть позже, а пока закроем и снова откроем Deployment Tools Command Prompt, скопируем ещё один важный файл и отмонтируем образ.

copy x86\boot\boot.sdi C:\TFTP\Boot
cd /d C:\WinPE 
imagex /unmount mount
 

Скопируем файл winpe.wim в каталог C:\TFTP\Boot под именем boot.wim и приступим к созданию загрузочного меню Windows (BCD).

copy winpe.wim C:\TFTP\Boot\boot.wim
cd /d C:\TFTP\Boot 
bcdedit -createstore BCD
 

В простейшем случае нам достаточно указать параметры для RAM-диска.

bcdedit -store BCD -create {ramdiskoptions} /d "Ramdisk options" 
bcdedit -store BCD -set {ramdiskoptions} ramdisksdidevice boot 
bcdedit -store BCD -set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
bcdedit -store BCD -create /d "PE Boot Image" /application osloader
 

Обратите внимание на вывод последней выполненной команды. В нём содержится GUID, который надо скопировать и подставить вместо {guid} в командах ниже.

bcdedit -store BCD -set {guid} systemroot \Windows 
bcdedit -store BCD -set {guid} detecthal Yes 
bcdedit -store BCD -set {guid} winpe Yes 
bcdedit -store BCD -set {guid} osdevice ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions} 
bcdedit -store BCD -set {guid} device ramdisk=[boot]\Boot\boot.wim,{ramdiskoptions}

Для начала стоит попробовать загрузиться с «чистого» образа Windows PE. Однако кое-какие правки в него надо будет внести. Во-первых, могут понадобиться драйвера для сетевой карты или контроллера жёсткого диска. Во-вторых, неплохо было бы сделать автоматическое подключение к сетевой папке и запуск установщика. Снова открываем консоль WAIK и монтируем загрузочный образ.

cd /d C:\WinPE 
imagex /mountrw winpe.wim 1 mount

Для добавления драйверов (в виде *.inf и сопутствующих файлов, конечно же) используется следующая команда:

dism /image:mount /add-driver /driver:Путь до папки или inf-файла

Также необходимо отредактировать простой текстовый файл [C:\WinPE\]mount\windows\system32\startnet.cmd. Этот скрипт выполнится при старте PE-окружения и будет монтировать сетевую папку в качестве логического диска, с которого запустится установщик Windows 7.

wpeinit
net use z: \\192.168.0.51\Win7Install password /user:username
z:\setup.exe 

192.168.0.51 — это IP-адрес сервера, с которого производится установка. На нём надо скопировать все файлы с инсталляционного образа Windows 7 в какую-либо папку (в нашем примере это Win7Install) и открыть к ней доступ по сети. Вместо password и username надо соответственно указать пароль и имя локального пользователя. Можно даже создать отдельную учётную запись под это дело. В конце не забудьте закрыть wim-файл с применением изменений и скопировать его в директорию TFTP-сервера. Консоль можно закрыть.

imagex /unmounts /commit mount
copy winpe.wim C:\TFTP\Boot\boot.wim
 

Ранее мы уже касались темы файла ответов для автоматизации процесса установки и первичной настройки Windows 7. В данном случае мы также имеем полное право использовать его возможности. Для подготовки файла лучше воспользоваться утилитой Windows System Image Manager из комплекта WAIK. После запуска в меню выбираем File → New answer file, затем нам предложат выбрать установочный образ системы. Он находится в каталоге sources, откуда будет производиться установка ОС (в нашем примере Win7Install/sources) — выбирайте файл с расширением clg и вашей редакцией ОС в качестве имени (например, install_Windows 7 PROFESSIONAL.clg).

В панели Windows Image имеется дерево компонентов, которые можно настраивать. Для этого надо кликнуть по любому из них правой кнопкой мыши и во всплывающем меню выбрать пункт Add Setting to Pass * — он тут же появится в панели Answer File, где можно будет отредактировать различные параметры. Например, добавить учётные записи, разбить диски, установить обновления и так далее. Мы не будем подробно останавливаться на наполнении файла ответов — всю необходимую информацию можно почерпнуть в Сети или из встроенной справки. Готовый файл надо сохранить всё в той же установочной директории sources под именем autounattend.xml.

Осталось совсем немного. Необходимо настроить DHCP и TFTP. В принципе, вы можете использовать практически любые программные реализации этих серверов. Мы же для примера воспользуемся универсальной утилитой Serva32/64. После запуска программы надо кликнуть по кнопке Settings, перейти на вкладку DHCP и отметить галочкой пункт DHCP server. Чуть ниже кликаем по Bind DHCP to this address и в выпадающем списке выбираем IP-адрес сетевого интерфейса, на котором будет работать сервер. Естественно, адрес должен быть статичным и заранее заданным.

В поле IP Pool 1st addr указываем начальный IP-адрес диапазона выдаваемых адресов, а в Pool size — число DHCP-клиентов. Не забудьте также прописать маску подсети (Subnet mask). Наконец, в Boot File указываем относительный путь до файла PXE-загрузчика. В нашем случае это может быть pxeboot.com или pxeboot.n12. В первом случае для старта сетевой загрузки будет предложено нажать клавишу F12, иначе будет продолжен запуск с локальных носителей. Если F12 отсутствует, то надо указать второй загрузчик (возможно, придётся переименовать его в pxeboot.com).

На вкладке TFTP аналогичным образом включаются галочки TFTP Server и Bind TFTP to this address, указывается корневая папка сервера (у нас это C:\TFTP) и обязательно отмечается опция Option negotiation, а PXE Compatibility выключается. Всё, теперь нажимаем OK, сохранив тем самым настройки, и перезапускаем утилиту. Проверьте, чтобы брандмауэр не блокировал используемые порты (UDP 67-69). Можно попробовать загрузиться по сети на одной из клиентских машин. Для выявления проблем используйте логи, которые генерирует Serva. Если всё в порядке, автоматически запустится инсталлятор Windows 7, дальнейшая работа с которым ничем не отличается от той, что идёт при загрузке с установочного USB/DVD/HDD.

Вот, собственно, и всё. Мы разобрали довольно простой пример сетевой установки Windows 7. Как его можно улучшить? Ну, во-первых, можно добавить дополнительные опции в загрузчик Windows, чтобы он по умолчанию загружался с локальных носителей, а не по сети. Во-вторых, загрузчик syslinux, о котором говорилось в прошлый раз, можно спокойно использовать с утилитой Serva32/64. Формат файла конфигурации (pxelinux.cfg/default) тот же самый. В-третьих, не помешает глубже изучить возможности файла ответов и автоматической инсталляции Windows. В общем, есть куда копать. Но это мы оставим для самостоятельного изучения и на прощание традиционно пожелаем удачи в сетевых экспериментах.

 
 
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥