- Установка Windows 7 поверх PXE из Linux без использования WAIK
- 1. Обзор
- 1.1. Введение
- 1.2. Что должны получить
- 1.3. Ссылки
- 2. Конфигурирование и запуск сервисов
- 2.1 dhcp
- 2.2 tftpd
- 2.3 samba
- 2.4 binl
- 3. Подготовка загрузочных файлов Windows
- 3.1. Импорт загрузочного файла, используемого по умолчанию
- 3.2. Подготовка файла WIM
- 3.2.1. Создаем файл winpehl.ini
- 3.2.2. Создаем скрипт install.cmd
- 3.2.3. Добавляем сетевые драйверы
- 3.2.4. Создаем файл actionfile
- 3.2.5. Создаем файл WIM
- 3.3. Создание загрузочных файлов для конкретных систем
- 4. Подготовка файлов автоматической установки
- 4.1. Поддерживаемый язык
- 4.2. Определение версии ОС
- 4.3. Выбор образа подходящего инсталлятора
- 4.4. Создаем/редактируем файлы автоматической установки
- 5. Решение возникших проблем
- Установка Windows 10 через PXE посредством Autounattend
Установка Windows 7 поверх PXE из Linux без использования WAIK
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.
1.3. Ссылки
Я нашел в сети интересную информацию, объединил ее и при помощи некоторых проб и ошибок придумал этот метод. Вот некоторые ссылки для получения дополнительной информации.
Дайте мне знать, если вы найдете более интересные статьи! (пожалуйста, сделайте это в форуме на www.ultimatedeployment.org ).
2. Конфигурирование и запуск сервисов
2.1 dhcp
Запустите сервер dhcp следующим образом
Файл dhcpd.conf должен выглядеть приблизительно следующим образом. Если захотите, вы можете внести изменения в ip-адреса, выделенные красным цветом:
Файл pxelinux.0 является загрузочным файлом, который запускает весь процесс pxe. Когда клиент загружается, этот файл загружается первым и, в свою очередь, загружает конфигурационный файл pxelinux.cfg/default. Этот файл выглядит следующим образом:
2.2 tftpd
Запустите демон tftp следующим образом
Эта команда запускает tftpd со следующими параметрами:
Конфигурационный файл /work/conf/tftpd.conf лишь заменяется обратный слэш на прямой слэш:
2.3 samba
Запустите сервер samba следующим образом
Убедитесь, что каталог /work/sambashare экспортируется как sambashare REMINST. Это важная часть файла smb.conf:
2.4 binl
Запустите сервер binl следующим образом
Эта команда запустит сервис binl со следующими параметрами:
Здесь журнальный файл важен, поскольку в дальнейшем он должен быть прочитан. Сервис binl определяет, какой загрузочный файл клиент скачал последним, для этого выполняется следующий скрипт. Скрипт ищет журнальный файл tftpd и возвращает место, где расположен файл bcd, который находится в том же самом каталоге, что и найденный файл wdsnbp.com. Это необходимо, т.к. мы хотим знать, какой вариант был выбран в меню загрузки PXE.
3. Подготовка загрузочных файлов Windows
3.1. Импорт загрузочного файла, используемого по умолчанию
Прежде всего нам нужно смонтировать установочный DVD. Я смею предположить, что он находится в плейере DVD, известным как /dev/cdrom. Вы должны смонтировать его следующим образом:
Если у вас есть файл iso, то вы должны сделать что-то вроде следующего:
Как только вы это сделаете, файлы, расположенные на DVD (внутри образа), можно будет опубликовать с помощью samabashare. Затем нам нужно извлечь отдельные файлы из файла boot.wim, который находится на DVD в каталоге /sources. Они должны быть в самом конце каталога /work/tftproot, поэтому мы сначала выполняем следующее:
Обратите внимание, что мы извлекли файл pxeboot.n12, а затем переименовали его в pxeboot.com!
3.2. Подготовка файла WIM
Что ж, теперь нам нужно создать файл winpe.wim. Мы делаем следующее:
3.2.1. Создаем файл winpehl.ini
В нем должно быть что-то вроде следующего:
Убедитесь, что он имеет формат dos (а не формат unix)
3.2.2. Создаем скрипт install.cmd
Создайте скрипт install.cmd, который позаботится о установке сразу, как будет запущен Winpe:
3.2.3. Добавляем сетевые драйверы
Идем дальше. Сетевые драйверы являются трудной темой. Вам нужны будут сетевые драйверы, которые поставляются для вашей сетевой карты, их можно скачать с сайта поставщика сетевой карты, а некоторые из них могут быть уже в дистрибутиве Windows 7 WINPE на инсталляционном носителе. Я предполагаю, что вы будете с помощью PXE (загрузка по сети) загружать виртуальную машину vmware с сетевой картой AMD (которая во многих случаях, является сетевой картой, используемой по умолчанию для новой виртуальной машины).
Если вы загрузили виртуальную машину и, когда загрузка идет из сети, то сообщается о сетевой карте Intel E1000, вам придется остановить виртуальную машину, удалить следующие строки из файла .vmx и перезапустить виртуальную машину.
Если вы теперь запустите виртуальную машину, то вам будет сообщено, что есть сетевая карта AMD . Так что теперь нам нужно драйвера windows PE для этой сетевой карты AMD. Есть станица , на которой вы можете узнать откуда их можно скачать:
Для windows PE вы можете использовать драйвера windows XP. В общем, вам нужен файл .inf и файл .sys. Файл inf обычно содержит список файлов идентификаторов сетевое устройств и соответствующих им драйверов .sys). Если вы не знаете, сетевая с каким идентификатором используется в вашей системе, то просто скопируйте в каталог /work/wim несколько драйверов (файлы inf и sys).
3.2.4. Создаем файл actionfile
Ниже указаны действия, которые нам нужно выполнить, когда из файла boot.wim создается файл winpe.wim. Вы можете захотеть отредактировать список драйверов, которые указываются в файле /work/wim/actionfile.txt. Этот файл может выглядеть следующим образом:
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, которые я использую, находятся в этом пакете .
Возможно, что для вашего любимого дистрибутива Linux вам потребуются другие пакеты с дистрибутивами. Нам нужны эти инструментальные средства для того, чтобы иметь возможность отредактировать файлы windows BCD (Boot Cofiguration Data — конфигурационные данные для загрузки). Теперь мы выполняем три операции для обеих систем, которые мы хотим установить дистанционно:
- Копируем данные Boot Cofiguration Data с установочного DVD в загрузочный каталог систем pxe
- Изменяем их для того, чтобы получить PXE BCD
- Копирует в этот каталог программу сетевой загрузки сервиса развертывания Windows (wdsnbp.com) и также и переименовываем ее в wdsnbp.0
Вы можете легко выполнить эти операции для более, чем двух систем .
4. Подготовка файлов автоматической установки
4.1. Поддерживаемый язык
Сначала узнаем, какие языки поддерживаются на данном установочном носителе.
Вы должны найти что-то вроде следующего
По-видимому, на этом DVD есть язык en-US (и еще en-us).
4.2. Определение версии ОС
Теперь нам нужно проверить, какая версия поддерживается установочным DVD
Вы должны получить нечто вроде следующего:
Так что это Windows 7 Ultimate OEM DVD с лицензией (non Volume). Нам нужна эта информация для того, чтобы иметь возможность выбрать образ в следующем разделе:
4.3. Выбор образа подходящего инсталлятора
Сначала мы сделаем дамп информации XML файла install.wim:
Вы должны получить приблизительно следующее:
Поскольку мы знаем с каким языком и какой версией windows 7 мы имеем дело, мы можем отредактировать файлы автоматической установки. Я выделил третий образ, поскольку это версия Ultimate Edition, которую мы нашли в предыдущем разделе. Это Architecture 0, что означает — x86.
4.4. Создаем/редактируем файлы автоматической установки
Файл автоматической установки может выглядеть, например, следующим образом (вероятно, вы захотите изменить значения, выделенные красным цветом):
Итак, как только вы это сделаете, вы должны быть в состоянии загрузить (загрузка pxe) новую систему, и вы должны иметь возможность выбирать из двух систем, которые вы настроили для автоматического развертывания. Если этого сделать не удастся, то, пожалуйста, перейдите к следующему разделу «Решение возникших проблем» и поделитесь своим опытом на форуме на сайте ultimatedeployment.org .
5. Решение возникших проблем
Ниже приведен упрощенный обзор процесса загрузки, через который проходят клиенты PXE, когда используется этот метод.
- C обозначает клиентскую систему (система, которая должна быть развернута)
- S обозначает сервер (систему, на которой находятся конфигурационные файлы и на которой запущены сервисы, позволяющие установить клиентскую систему)
Сервер ищет в файле находит в tftpd.log, откуда клиент загрузил свой файл wdsnbp и предполагает, что файл BCD находится в том же самом каталоге.
Клиент читает файл BCD и определяет, откуда нужно скачивать файлы boot.sdi и winpe.wim
Затем клиент загружается в Windows PE. Когда это будет сделано, то от нас потребуется подготовить следующее:
- Найти в реестре адрес IP сервера загрузки
- Найти в реестре конкретные данные о загрузке
- Загрузить сетевые драйверы и запустить сервис сети
- Переместить файлы setup.exe и sources\setup.exe на прежнее место
- Подключиться через Samba к серверу загрузки
- Разбить диск на разделы с помощью файла diskpart, который можно найти через samba на сервере загрузки
- Переместить файлы setup.exe и sources\setup.exe на прежнее место
- Удалить из реестра ответ PXE binl для того, чтобы предотвратить установку WDS вместо обычной установки
- Запустить setup.exe с файлом автоматической установки, который можно найти на сервере загрузки
Когда возникают проблемы, то, очевидно, что нужно заглянуть в следующие журнальные файлы:
- журнальный файл tftpd (/work/log/tftpd.log)
- журнальный файл dhcpd (/var/log/messages)
- журнальный файл binl (/work/log/binl.log)
Если я найду дополнительную информацию, то я ее добавлю.
Источник
Установка Windows 10 через PXE посредством Autounattend
В дополнении к уже опубликованным заметкам не хватает разбора шагов, как же все таки развернуть образ Windows 10 по сети через PXE (Ubuntu 18.04 Server amd64) с применением файла ответов. В моей локальной сети уже функционирует для быстрого разворачивания сервис PXE , постепенно какие проблемы возникают они находят свое отражение в заметках и по мере моего настроения я публикую их. Заметка опирается:
- Mikrotik (выступает, как шлюз между локальной сетью и интернетом)
- Хранилище: HP MicroServer Gen8 (ESXi 6.0) соединено через ethernet gigabyte соединение на его основе имеются виртуальные машины, одна из них:
- srv-pxe:PXE + NFS ( for Ubuntu,Debian и т.д.) + SMB ( for Windows ) + Apt-cacher-ng ( for deb package )
- и стенд для тестирования разворачивания образа по сети на базе: Qemu+KVM (Ubuntu 18.04 Server amd64):tips_ubuntu_18_04_kvm_qemu_v1.odt Данная система (мой тестовый полигон) у меня собрана система исключительно для отладки в противовес ранее используемому Virtualbox которую я применял в повседневности на домашне/рабочем ноутбуке Lenovo E555
- Материнская плата: Материнская плата GIGABYTE GA-970A-DS3P, SocketAM3+, AMD 970, ATX, Ret
- Процессор: Процессор AMD FX 6300, SocketAM3+ OEM [fd6300wmw6khk]
- Кулер: Устройство охлаждения(кулер) DEEPCOOL GAMMA ARCHER PRO, 120мм, Ret
- Видеокарта: Видеокарта PALIT nVidia GeForce GTX 1080 , PA-GTX1080 GameRock Premium 8G, 8Гб, GDDR5X, Ret
- RAM: 12Gb
- Корпус: Сделан риг, так что с охлаждение проблем нет.
Итак шаги пошаговой настройки которые я применяю у себя.
Шаг №1: Загрузочный файл предустановки Windows 10 полученный опираясь на опубликованную заметку кладу по пути на PXE сервисе: /media/pxeboot/windows/windows10/x64/winpe_amd64.iso
$ ls -lh /media/pxeboot/windows/windows10/x64/
-rw-r—r— 1 nobody nogroup 171M Jan 1 16:01 winpe_amd64.iso
Шаг №2: После на PXE сервисе создаю структуру каталогов где будет находится распакованный iso образ с определенным install.wim необходимой редакции для установки:
$ sudo mkdir -p /windows/windows10/
Из заметки: tips_windows_10_iso_file_answered_v1.odt созданный образ копирую на PXE сервис в каталог: /windows/windows10/x64
$ scp Documents/Win10_Pro_x64.iso ekzorchik@172.40.40.8:/home/ekzorchik
$ sudo mount -o loop Win10_Pro_x64.iso /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
$ sudo cp -fr /mnt/* /windows/windows10/x64/
Шаг №3: Проверяю что в каталоге где распакован образ находится мой собственный файл ответов Autounattend.xml
Шаг №4: Создаю/Добавляю к уже существующему PXE меню установки:
$ sudo nano /media/pxeboot/pxelinux.cfg/default
LABEL Install Windows 10 Pro SP1 x64
Шаг №5: Поправляю права доступа для PXE
$ sudo chown -R nobody:nogroup /media/pxeboot/
$ sudo chown -R nobody:nogroup /windows/
Шаг №6: Создаю на своем полигоне тестовую виртуальную машину и указываю что загрузка должна происходить по сети с моего опубликованного PXE сервера на домашнем роутере Mikrotik. (Как это сделать, см. предыдущие заметки касательно настройки PXE). Диск у VM — это SSD накопитель KINGSTON A400 SA400S37/480G 480Гб, 2.5″, SATA III
выбираю в своем PXE меню: Install Windows 10 Pro SP1 x64 и нажимаю клавишу Enter
Загружается среда предустановки wpeinit , далее по аналогии как устанавливал Windows 7 x64 через файл ответов подключаюсь к SAMBA сервису:
net use M: \\172.40.40.8\install\windows10\x64
cd /d M:\
setup.exe /unattend:Autounattend.xml
И мастер инсталляции Windows 10 Pro x64 успешно запускается и применяет к установке подмонтированный файл ответов. По итогу система установилась с помощью моего файла ответов. Работает. На этом я прощаюсь, с уважением, автор блога Олло Александр aka ekzorchik.
Источник