Установка windows по сети pxe

Установка windows по сети pxe

Хочу поделиться с вами своим опытом по установке Windows 7 с сети (PXE boot на Ubuntu server).
Так как я не нашел удачного решения в интернете, решил поделится опытом.
Если интересно прошу под кат.

Эта статья является дополнением к ранее опубликованной статье на хабре.
На днях наткнулся на интересную статью, Где очень хорошо рассказывается об установке Windows 7 с сети, но с платформы на базе Windows. А так как у меня есть сервер на Ubuntu, захотелось прикрутить его туда, но все оказалось не так просто.

Создание PXE образа

Итак, начнем с создания PXE образа. Для этого нам потребуется Набор автоматической установки Windows® (AIK) для Windows®7.
Работает на платформе Windows 7 и Windows Server 2008 (R2).
После установки открываем в пуске: Командная строка средств развертывания с правами Администратора, и начинаем собирать образ.
copype.cmd x86 d:winpe
imagex /mountrw winpe.wim 1 mount

Теперь, для автоматической установки, в примонтированной папке d:winpe редактируем файл Windowssystem32startnet.cmd:
wpeinit
net use y: \192.168.0.1seven /user:seven seven
if exists y:sourcessetup.exe (
y:sourcessetup.exe
)

В строке монтирования, можно задать свои параметры, смотря как будете настраивать Samba, у меня к примеру она расшарена без авторизации с правами read only и параметр /user:seven seven не обязательно.
imagex.exe /unmount /commit mount

Теперь извлечем ядро и необходимые файлы для загрузки образа:

imagex /mount d:winpewinpe.wim 1 d:winpemount
xcopy /ey d:winpemountwindowsootpxe d: ftp
xcopy /iy d:winpemountwindowsootfonts d: ftpBootfonts
copy /y d:winpeISOootoot.sdi d: ftpBoot
imagex.exe /unmount d:winpemount
#B Копируем сам образ в папку Boot
copy /y d:winpewinpe.wim d: ftpBoot

Прошу обратить внимание на то что папка Boot с большой буквы(Важно).
Теперь создаем «Скрипт» d:winpecreatebcd.cmd
bcdedit -createstore %1BCD
bcdedit -store %1BCD -create /d "Ramdisk options"
bcdedit -store %1BCD -set
ramdisksdidevice boot
bcdedit -store %1BCD -set
ramdisksdipath ootoot.sdi
for /F "tokens=2" %%i in (‘bcdedit -store %1BCD -create /d "MyWinPE Boot Image" /application osloader’) do set gu > bcdedit -store %1BCD -set %guid% systemroot Windows
bcdedit -store %1BCD -set %guid% detecthal Yes
bcdedit -store %1BCD -set %guid% winpe Yes
bcdedit -store %1BCD -set %gu > bcdedit -store %1BCD -set %gu > bcdedit -store %1BCD -create /d "Windows VISTA BootManager"
bcdedit -store %1BCD -set
timeout 30
bcdedit -store %1BCD -set
displayorder %guid%

И запускаем его:
createbcd.cmd d: ftpoot

Основная проблема это бэкслэши, Регистр и их Ремап, тут я не стал их переделывать, а просто создал ремап на сервере, можете сами поиграться, но об это позже.
Теперь у нас готов PXE набор для установки Windows 7 с сети.
Также вы можете скачать мой образ тут или тут

Настройка DHCP – Сервера:

Конфигурационный файл /etc/dhcp/dhcpd.conf

ddns-update-style none;
option domain-name "xxxxxxxx.xx";
option domain-name-servers 8.8.8.8;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 <
range 192.168.0.5 192.168.0.100;
filename = "pxeboot.n12";
>

С такой конфигурацией при ланбуте сразу пойдет установка windows. Если-же вы будете использовать эту статью как дополнение к этой статье, тогда в файле /etc/dhcp/dhcpd.conf ничего не меняем, только (Важно!) переименовываем файл pxeboot.n12 в pxeboot.0 (иначе не заработает) и добавляем в меню /var/lib/tftpboot/pxelinux.cfg/default
label Install Windows7
kernel /pxeboot.0

Установка и настройка TFTP Сервера:

sudo apt-get install tftpd-hpa
sudo nano /etc/default/tftpd-hpa

У меня конфиг такой:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="—secure -m /var/lib/tftpboot/tftp-remap -v"

Добавляем только параметры:
-m /var/lib/tftpboot/tftp-remap (файл ремапа) и параметр -v чтобы в /var/log/syslog можно было отслеживать запросы.
Копируем содержимое папки D: ftp в /var/lib/tftpboot/seven/.
Теперь создаем файл ремапа:
touch /var/lib/tftpboot/tftp-remap
nano /var/lib/tftpboot/tftp-remap

У меня он выглядит так:
r bootmgr.exe /seven/bootmgr.exe
r abortpxe.com /seven/abortpxe.com
r hdlscom1.com /seven/hdlscom1.com
r hdlscom1.n12 /seven/hdlscom1.n12
r hdlscom2.com /seven/hdlscom2.com
r hdlscom2.n12 /seven/hdlscom2.n12
r pxeboot.com /seven/pxeboot.com
r pxeboot.n12 /seven/pxeboot.n12
r WdsConfig.inf /seven/WdsConfig.inf
r wdsnbp.com /seven/wdsnbp.com
r \Boot\BCD seven/Boot/BCD
r \boot\boot.sdi seven/Boot/boot.sdi
r \Boot\winpe.wim seven/Boot/winpe.wim

Настройка samba

Есть 2 варианта:
1)Скопировать папку sources с установочного диска в /var/seven (Необязательно в /var)
2)Примонтировать образ
mkdir /var/seven
sudo mount –o loop win7.iso /var/seven/
И зашариваем саму папку /var/seven в файле /etc/samba/smb.conf

Читайте также:  Смена пароля на сервере

[seven]
path = /srv/tftp/seven
browseable = yes
read only = yes
guest ok = yes
Перезагружаем службы:
sudo /etc/init.d/dhcp3-server restart
sudo /etc/init.d/tftpd-hpa restart
sudo /etc/init.d/smbd restart
Готово, можем устанавливать Windows 7 с сети.
Если возникнут какието проблемы, можно их увидеть в:
sudo tail –f /var/log/syslog

Спасибо за внимание!

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Область применения

Краткий обзор

В этом пошаговом руководстве описано, как настроить PXE-сервер для загрузки WindowsPE, загружая клиентский компьютер из сети. С помощью средств Windows PE и файла образа Windows 10 можно установить Windows 10 по сети.

Необходимые условия

  • Компьютер развертывания: компьютер с установленным комплектом средств для развертывания и оценки Windows (виндовсадк).
  • DHCP-сервер: DHCP-сервер или прокси-сервер DHCP, настроенный для отправки ответов на запросы PXE-клиентов.
  • PXE-сервер: сервер под управлением службы TFTP, на котором могут размещаться файлы загрузки Windows PE для скачивания клиентом.
  • Файловый сервер: сервер с общей сетевой папкой.

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

Шаг 1: скопируйте исходные файлы Windows PE

На компьютере развертывания: нажмите Пуск и введите развертывание.

Щелкните правой кнопкой мыши элемент Среда средств развертывания и работы с образами и затем нажмите Запуск от имени администратора. Будет запущен ярлык среды средств развертывания и создания образов, который открывает окно командной строки и автоматически задает переменные среды таким образом, чтобы они указывали на все необходимые средства.

Выполните следующую команду, чтобы скопировать базовые файлы WindowsPE в новую папку. Сценарий требует два аргумента: архитектуру оборудования и целевое расположение. Значение может быть x86, amd64 или arm, а может соответствовать пути к локальному каталогу. Если каталог еще не существует, он будет создан.

Например, следующая команда копирует файлы архитектуры amd64 в каталог C:winpe_amd64:

Сценарий создает структуру каталогов назначения и копирует все необходимые файлы для этой архитектуры. В предыдущем примере создаются следующие каталоги:

Подключите базовый образ WindowsPE (WinPE. wim) к каталогу маунт с помощью средства DISM. При подключении файла образа его содержимое распаковывается в папку, что позволяет вносить изменения напрямую или с помощью таких программ, как DISM. См. приведенный ниже пример.

Убедитесь, что отображается сообщение "Операция завершена успешно". Примечание. Чтобы просмотреть подключенные в настоящее время образы, введите dism /get-MountedWiminfo.

Выполните сопоставление общего сетевого ресурса корневому каталогу TFTP на сервере PXE/TFTP и создайте папку Boot. Обратитесь к документации сервера TFTP, чтобы определить корневой каталог сервера TFTP, а затем включите общий доступ к этой папке и убедитесь, что она доступна в сети. В следующем примере имя сервера PXE имеет значение PXE-1, а общий доступ к корневому каталогу TFTP предоставляется с помощью сетевого пути \PXE-1TFTPRoot:

Скопируйте файлы загрузки PXE из подключенного каталога в папку oot. Пример.

Скопируйте файл boot.sdi на сервер PXE/TFTP.

Скопируйте загрузочный образ WindowsPE (Boot. wim) в папку бут.

(Необязательно) Скопируйте в папку oot шрифты true type

Шаг 2: настройка параметров загрузки и копирование файла BCD

Создайте хранилище BCD с помощью bcdedit.exe:

Настройте параметры RAMDISK:

Последняя команда возвращает идентификатор GUID, например:

Скопируйте этот идентификатор GUID для использования в следующих командах. В каждой приведенной команде замените "GUID1" своим идентификатором GUID.

Создайте новую запись приложения загрузки для образа WindowsPE.

Настройте параметры BOOTMGR (не забудьте заменить GUID1 в третьей команде своим идентификатором GUID):

Скопируйте файл BCD на свой TFTP-сервер:

Теперь ваш сервер PXE/TFTP настроен. Можно просмотреть установленные параметры BCD с помощью команды bcdedit /store /enum all. См. следующий пример. Примечание. Ваш идентификатор GUID будет отличаться от приведенного ниже.

Читайте также:  Nor flash что это

Если вы запустите процесс загрузки PXE, но получите сообщение об ошибке "Данные конфигурации загрузки для компьютера отсутствуют или содержат ошибки", убедитесь, что каталог oot установлен в правильном корневом каталоге сервера TFTP. В используемом здесь примере имя этого каталога — TFTPRoot, но сервер TFTP может быть другим.

Сводка по процессу загрузки PXE

В следующей таблице приведены основные сведения о процессе загрузки PXE-клиента.

Игорь Осколков

22 марта 2012

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 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. Перед нами откроется консоль, в которой надо ввести следующую команду:

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

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

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

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

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

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

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

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

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

Ранее мы уже касались темы файла ответов для автоматизации процесса установки и первичной настройки 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 1 st 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.

Ссылка на основную публикацию
Adblock detector