Создание winpe для pxe

Обновлено: 04.07.2024

Итак, я плавно со своим PXE сервером развернутым на Ubuntu 18.04 Server подошел к этапу, когда нужно в дополнении к автоматизированным установкам Ubuntu 18.04 Desktop & Server дополнить функционал. Уже сделал, что можно загрузившись через LiveCD инструмент сбросить Windows пароль, проверить жесткий диск на предмет заражения вирусами т. д. А вот моя мечта это возможность устанавливать Windows 7,10 и серверную линейку из среды Ubuntu. Использовать WDS, пожалуй нет. Я специализируюсь на Ubuntu системах, а значит и пишу и делаю исходя из своего предпочтения. В этой заметке я для себя разобрал, как сделать Windows загрузку из под Ubuntu 18.04 PXE.

Подготавливаю систему Ubuntu 18.04 Server amd64 под первоначальное использование:

Устанавливаю пакет Samba на нем, точнее с его помощью у меня будет файловый ресурс где будет храниться образа Windows 7, как x86/amd64:

$ sudo apt-get install samba samba-common -y

$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.backup

$ sudo nano /etc/samba/smb.conf

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

idmap config * : backend = tdb

cups options = raw

netbios name = pxe

map to guest = bad user

kernel oplocks = no

nt acl support = no

guest account = nobody

comment = Windows 7 Image

level2 oplocks = no

acl allow execute always = true

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

$ sudo mkdir -p /windows/x32

$ sudo mkdir -p /windows/x64

Монтирую ISO образ Windows 7 на каталог Samba сервиса:

$ scp /media/ekzorchik/iso/SW_DVD5_Win_Pro_7w_SP1_64BIT_Russian_-2_MLF_X17-59431.ISO ekzorchik@172.33.33.25:/home/ekzorchik

$ sudo mount -o loop SW_DVD5_Win_Pro_7w_SP1_64BIT_Russian_-2_MLF_X17-59431.ISO /mnt

mount: /mnt: WARNING: device write-protected, mounted read-only.

$ sudo cp -fr /mnt/* /windows/x64/

$ scp /media/ekzorchik/iso/SW_DVD5_Win_Pro_7w_SP1_32BIT_Russian_MLF_X17-28979.ISO ekzorchik@172.33.33.25:/home/ekzorchik

$ sudo mount -o loop SW_DVD5_Win_Pro_7w_SP1_32BIT_Russian_MLF_X17-28979.ISO /mnt

$ sudo cp -fr /mnt/* /windows/x32/

$ sudo chmod -R 755 /windows/

$ sudo chown -R nobody:nogroup /windows/

$ sudo /etc/init.d/smbd restart

$ sudo /etc/init.d/nmbd restart

Samba ресурс с двумя каталогами x32 & x64

Устанавливаю PXE сервис:

Устанавливаю в систему пакет tftpd-hpa:

$ sudo apt-get install tftpd-hpa -y

$ sudo mkdir /media/pxeboot

$ sudo chmod -R 777 /media/pxeboot/

$ sudo chown -R nobody:nogroup /media/pxeboot/

$ sudo cp /etc/default/tftpd-hpa /etc/default/tftpd-hpa.backup

$ sudo nano /etc/default/tftpd-hpa

TFTP_OPTIONS="--secure --create --verbose"

Перезапускаю сервис tftpd-hpa:

$ sudo service tftpd-hpa restart && sudo service tftpd-hpa status | head -n 5

$ sudo apt-get install pxelinux syslinux -y

$ sudo cp /usr/lib/syslinux/modules/bios/vesamenu.c32 /media/pxeboot/

$ sudo cp /usr/lib/syslinux/modules/bios/libcom32.c32 /media/pxeboot/

$ sudo cp /usr/lib/syslinux/modules/bios/libutil.c32 /media/pxeboot/

$ sudo cp /usr/lib/PXELINUX/pxelinux.0 /media/pxeboot/

$ sudo cp /usr/lib/syslinux/memdisk /media/pxeboot/

$ sudo cp /usr/lib/syslinux/modules/bios/ldlinux.c32 /media/pxeboot/

$ sudo mkdir /media/pxeboot/pxelinux.cfg/

$ sudo nano /media/pxeboot/pxelinux.cfg/default

MENU TITLE PXE MENU

LABEL Boot from first hard disk

label Install Windows 7 x32/x64

$ sudo chown -R nobody:nogroup /media/pxeboot/

$ ss -l4 | grep tftp

udp UNCONN 3072 0 0.0.0.0:tftp 0.0.0.0:*

Далее на VM под управлением Windows 7 x64 устанавливаю пакет Windows AIK (KB3AIK_RU.iso размером 1.2 Gb ) и через инструмент Deployment Tools Command Prompt

( для amd64 создаю winpe образ )

C:\Program Files\Windows AIK\Tools\PETools>copype amd64 c:\winPE_x64

c:\winPE_x64>copy "c:\Program Files\Windows AIK\Tools\PETools\amd64\winpe.wim" c:\winPE_x64\ISO\sources\Boot.wim

c:\winPE_x64>copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\winPE_x64\ISO\

Computing directory information complete

Image file is 170760192 bytes

Writing 22 files in 9 directories to c:\winPE_x64\winpe_amd64.iso

Final image file is 170760192 bytes

( для x86 создаю winpe образ )

C:\Program Files\Windows AIK\Tools\PETools>copype x86 c:\winPE_x86

c:\winPE_x86>copy "c:\Program Files\Windows AIK\Tools\PETools\x86\winpe.wim" c:\winPE_x86\ISO\sources\Boot.wim

c:\winPE_x86>copy "c:\Program Files\Windows AIK\Tools\x86\imagex.exe" c:\winPE_x86\ISO\

Computing directory information complete

Image file is 145268736 bytes

Writing 18 files in 8 directories to c:\winPE_x86\winpe_x86.iso

Final image file is 145268736 bytes

Копирую получившийся iso файл на SAMBA сервис в каталог \\172.33.33.25\install

Копирую winpe_amd64.iso в smb ресурс \\172.33.33.25\install
Файл успешно скопирован на SMB ресурс

$ sudo mkdir /media/pxeboot/windows/

$ sudo mv /windows/winpe_amd64.iso /media/pxeboot/windows/

$ sudo mv /windows/winpe_x86.iso /media/pxeboot/windows/

Теперь беру VM и выставляю ей что она сперва должна произвести загрузку по сети

Вижу запрос на нажатие клавиши нажимаю клавишу Enter и производится загрузка с диска, а диск у меня это iso образ. Тем самым стартует загрузка Windows, но не привычная установка а приглашение командной строки:

Нажимаю клавишу Enter и начинается загрузка с winpe_amd64.iso
Вижу приглашение командной строки

В этом приглашении следует уже подмонтировать SAMBA ресурс и запустить установку ОС, т. е. Windows 7 Pro x64

X:\windows\system32> net use M: \\172.33.33.25\install\x64

Затем перехожу на букву M: и запускаю файл инсталляции операционной системы:

X:\windows\system32\cd /d M:

M:\>setup.exe

Указываю метод ввода (я предпочитаю чтобы дефолтным был английский язык, а не русский)

Запустив установку Windows 7 SP1 Pro x64 начинаю с первого шага выбора языка

Вообще следует разделить установку Windows в default файле:

LABEL Boot from first hard disk

LABEL Install Windows 7 Pro SP1 x64

LABEL Install Windows 7 Pro SP1 x86

M:\setup.exe /unattend: Autounattend.xml

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

А пока я прощаюсь, на этом всё, с уважением автор блога Олло Александр aka ekzorchik

This walkthrough describes how to configure a PXE server to load Windows PE by booting a client computer from the network. Using the Windows PE tools and a Windows 10 image file, you can install Windows 10 from the network.

Prerequisites

  • A deployment computer: A computer with the Windows Assessment and Deployment Kit (Windows ADK) and the Windows PE add-on with ADK installed.
  • A DHCP server: A DHCP server or DHCP proxy configured to respond to PXE client requests is required.
  • A PXE server: A server running the TFTP service that can host Windows PE boot files that the client will download.
  • A file server: A server hosting a network file share.

All four of the roles specified above can be hosted on the same computer or each can be on a separate computer.

Step 1: Copy Windows PE source files

On the deployment computer, click Start, and type deployment.

Right-click Deployment and Imaging Tools Environment and then click Run as administrator. The Deployment and Imaging Tools Environment shortcut opens a Command Prompt window and automatically sets environment variables to point to all the necessary tools.

Run the following command to copy the base Windows PE files into a new folder. The script requires two arguments: hardware architecture and destination location. The value of <architecture> can be x86, amd64, or arm and <destination> is a path to a local directory. If the directory does not already exist, it will be created.

For example, the following command copies amd64 architecture files to the C:\winpe_amd64 directory:

The script creates the destination directory structure and copies all the necessary files for that architecture. In the previous example, the following directories are created:

Mount the base Windows PE image (winpe.wim) to the \mount directory using the DISM tool. Mounting an image file unpacks the file contents into a folder so that you can make changes directly or by using tools such as DISM. See the following example.

Verify that "The operation completed successfully" is displayed. Note: To view currently mounted images, type dism /get-MountedWiminfo.

Map a network share to the root TFTP directory on the PXE/TFTP server and create a \Boot folder. Consult your TFTP server documentation to determine the root TFTP server directory, then enable sharing for this directory, and verify it can be accessed on the network. In the following example, the PXE server name is PXE-1 and the TFTP root directory is shared using a network path of \\PXE-1\TFTPRoot:

Copy the PXE boot files from the mounted directory to the \boot folder. For example:

Copy the boot.sdi file to the PXE/TFTP server.

Copy the bootable Windows PE image (boot.wim) to the \boot folder.

(Optional) Copy true type fonts to the \boot folder

Step 2: Configure boot settings and copy the BCD file

Create a BCD store using bcdedit.exe:

Configure RAMDISK settings:

The last command will return a GUID, for example:

Copy this GUID for use in the next set of commands. In each command shown, replace "GUID1" with your GUID.

Create a new boot application entry for the Windows PE image:

Configure BOOTMGR settings (remember to replace GUID1 in the third command with your GUID):

Copy the BCD file to your TFTP server:

Your PXE/TFTP server is now configured. You can view the BCD settings that have been configured using the command bcdedit /store <BCD file location> /enum all. See the following example. Note: Your GUID will be different than the one shown below.

If you start the PXE boot process, but receive the error that "The boot configuration data for your PC is missing or contains errors" then verify that \boot directory is installed under the correct TFTP server root directory. In the example used here the name of this directory is TFTPRoot, but your TFTP server might be different.

В этом разделе вы узнаете, как развертывать Windows 10 с помощью Microsoft Endpoint Manager пакетов развертывания и последовательностей задач. В этом разделе вы сможете развернуть Windows 10 Корпоративная на компьютере UEFI с именем PC0001. Для процедур в этом разделе используется существующая инфраструктура Configuration Manager, интегрированная с MDT.

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

Для целей этого руководства мы будем использовать как минимум два серверных компьютера (DC01 и CM01) и один клиентский компьютер (PC0001).

При желании PC0001 может быть VM на сервере HV01, который является Hyper-V хост-компьютером, который мы использовали ранее для создания Windows 10 эталонного изображения. Однако, если PC0001 является VM, необходимо убедиться, что у него есть достаточные ресурсы для запуска последовательности задач osD Configuration Manager. Рекомендуется использовать 2 ГБ оперативной памяти или более.

Все серверы работают под управлением Windows Server 2019. Однако вы также можете использовать более раннюю поддерживаемую версию Windows Server.

Конфигурация консоли WDS не требуется для работы PXE. Все делается с консолью Configuration Manager.

Процедуры

Запустите компьютер PC0001. В меню предзагрузочной среды выполнения PXE нажмите клавишу ВВОД, чтобы разрешить загрузку PXE.

На странице Welcome to the Task Sequence Wizard введите пароль pass@word1 и нажмите кнопку Далее.

На странице Выберите последовательность задач для выполнения выберите Windows 10 Корпоративная x64 RTM и нажмите кнопку Далее.

На странице Изменить переменные последовательности задач дважды щелкните переменную OSDComputerName и в поле Значение введите PC0001, а затем нажмите кнопку ОК. Затем нажмите кнопку Далее.

Развертывание операционной системы займет несколько минут.

Вы можете отслеживать развертывание на CM01 с помощью workbench развертывания MDT. Когда появится запись PC0001, дважды щелкните PC0001, выберите Удаленное управление DaRT и просмотрите параметр Удаленное управление. Последовательность задач будет работать и делать следующее:

  • Установка операционной системы Windows 10.
  • Установка клиента Configuration Manager и исправления клиента.
  • Присоединитесь к компьютеру в домене.
  • Установка приложения, добавленного в последовательность задач.

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

Мониторинг MDT.

Мониторинг развертывания с помощью MDT.

По завершению развертывания у вас будет компьютер с Windows 10 с установленным приложением Adobe Reader, а также приложения, включенные в справочный образ, например Office 365 Pro Plus.

Ниже приведены примеры различных этапов развертывания:

pc0001a.

pc0001b.

pc0001c.

pc0001d.

pc0001e.

pc0001f.

pc0001g.

pc0001h.

pc0001i.

pc0001j.

pc0001k.

pc0001l.

pc0001m.

pc0001n.

Далее см. обновление клиента Windows 7 SP1 с Windows 10 с помощью диспетчера конфигурации.

Цель заметки: Это создать образ winpe в который интегрировать сетевые драйвера под те материнские платы которые у меня есть в наличии дабы после при установке операционной системы через PXE не было проблем, как в этой заметке:

Сетевые драйвера для импорта в образ winpe.iso

Все действия в этой заметке выполняются под рабочей системой Windows 7 SP1 x64 развернутой под Virtualbox основной системы Ubuntu 18.04 Desktop amd64 ноутбука Lenovo E555.

Скачал пакет драйверов на сетевую карту motherboard_driver_lan_realtek_8111_w7.exe , распаковал и положил в каталог C:\driver который буду указывать при импортировании в образ winpe_amd64

C:\Program Files\Windows AIK\Tools\PETools>mkdir c:\mount

C:\Program Files\Windows AIK\Tools\PETools>copype amd64 c:\winPE_x64

C:\Program Files\Windows AIK\Tools\PETools>copy "c:\Program Files\Windows AIK\Tools\PETools\amd64\winpe.wim" c:\winPE_x64\ISO\sources\Boot.wim

C:\Program Files\Windows AIK\Tools\PETools>dism /cleanup-wim

c:\winPE_x64>dism /mount-wim /wimfile:c:\winPE_x64\ISO\sources\Boot.wim /index:1 /mountdir:c:\mount

c:\winPE_x64>dism /image:c:\mount /add-driver:"c:\driver" /recurse /forceunsigned

( или указываем конкретный драйвер:

c:\winPE_x64>dism /image:c:\mount /driver:" c:\driver\rt64win7.inf " /recurse /forceunsigned )

Версия образа: 6.1.7600.16385

Выполняется поиск пакетов драйверов для установки.

Найдено пакетов драйверов для установки: 1.

Установка 1 из 1 - c:\driver\rt64win7.inf : Пакет драйверов успешно установлен.

Операция успешно завершена.

После проверяем, что драйвер успешно импортирован в образ:

c:\winPE_x64>dism /image:c:\mount /get-drivers

Версия образа: 6.1.7600.16385

Выполняется извлечение списка сторонних драйверов из хранилища драйверов.

Пакет драйверов включает:

Опубликованное имя : oem0.inf

Исходное имя файла : rt64win7.inf

Имя класса : Net

Имя поставщика : Realtek

Операция успешно завершена.

c:\winPE_x64>dism /unmount-wim /mountdir:c:\mount /commit

c:\winPE_x64>copy "c:\Program Files\Windows AIK\Tools\amd64\imagex.exe" c:\winPE_x64\ISO\

Скопировано файлов: 1.

А теперь нужно дополнить образ winpe_amd64.iso . Т.е. добавить в него скрипт по удаленного монтированию моего SAMBA сервиса с последующим запуском строки setup.exe /unattend:Autounattend.xml

C:\Program Files\Windows AIK\Tools\PETools>dism /mount-wim /wimfile:c:\winPE_x64\ISO\sources\Boot.wim /index:1 /mountdir:c:\mount

через редактор notepadd++ открываю сценарий windows

C:\mount\Windows\System32\startnet.cmd и вписываю в него, строки после уже имеющейся: wpeinit

wpeinit

net use M: \\172.40.40.8\install\x64

cd /d M:\

setup.exe /unattend:Autounattend.xml

После не забываем сохранить внесенные изменения в сценарий Windows .

На заметку: Команда wpeinit инициализирует драйвера и загрузку сетевых протоколов.

После собираем образ:

C:\Program Files\Windows AIK\Tools\PETools>dism /unmount-wim /mountdir:c:\mount /commit

Теперь нужно передать данный файл winpe_amd64.iso на PXE сервис , к примеру через WinSCP или любым другим способом, можно просто открыть в проводнике PXE ресурс \\172.40.40.8\install и кинуть туда файл образа. А после через Terminal перенести куда нужно:

$ sudo mv /windows/winpe_amd64.iso /media/pxeboot/windows/windows7/x64/winpe_amd64_new.iso

$ sudo chown -R nobody:nogroup /windows/

Для тестирования создаю еще одно меню выбора инсталляции в файле default

$ sudo nano /media/pxeboot/pxelinux.cfg/default

LABEL Install Windows 7 Pro SP1 x64 NEW

$ sudo chown -R nobody:nogroup /media/pxeboot/pxelinux.cfg/default

Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:

Поблагодари автора и новые статьи

будут появляться чаще :)

Карта МКБ: 4432-7300-2472-8059

Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.

Читайте также: