Как развернуть pxe сервер windows

В этой статье мы рассмотрим, как установить Windows 10 или 11 по сети без использования загрузочной USB флешки (установочного DVD диска). Для загрузки компьютера по сети через PXE мы будем использовать небольшой Tiny PXE Server. Инструкция применима для установки Windows на устройствах как с UEFI, так и с BIOS прошивкой.

В корпоративных сетях для разливки образов Windows по сети используются более функциональные Windows Deployment Services (WDS) и Microsoft Deployment Toolkit (MDT). В этой статье мы покажем, как быстро запустить PXE сервер на любом имеющемся компьютере (будь то устройство с Windows или Linux) и использовать его для сетевой установки Windows на компьютеры в этой же LAN с помощью простых средств.

Нам понадобятся:

  • Установочный ISO образ с Windows 10 или 11 (проще всего создать его с помощью Windows Media Creation Tool согласно инструкции https://winitpro.ru/index.php/2013/12/31/sozdaem-zagruzochnuyu-fleshku-s-windows-7-dlya-uefi-sistemy/ )
  • Образ Windows PE — можно использовать свой образ WinPE, извлечь его из образа восстановления MS DART, получить оригинальный WinPE с помощью Windows Assessment and Deployment Kit (Windows ADK), или использовать готовый образ типа Hiren’s BootCD PE.
  • Сервер Tiny PXE (http://reboot.pro/files/file/303-tiny-pxe-server/ )

Содержание:

  • Создаем загрузочный образ Windows PE с помощью ADK
  • Подготовка сервера сетевой установки TinyPXE
  • Сетевая установка Windows 10 и 11 с PXE сервера

Создаем загрузочный образ Windows PE с помощью ADK

Скачайте Windows ADK для Windows 11 и Windows PE add-on for the Windows ADK по ссылкам на странице https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install .

скачать ADK для Windows

При установке Windows ADK выберите минимальную установку Deployment Tools.

установка ADK Deployment Tools

Затем аналогично установите Windows PE add-on for Windows ADK.

установка Windows PE add-on for Windows ADK

После окончания установки запустите Deployment and Imaging Tool из стартового меню Windows. Или запустите вручную команду:

"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"

запуск Deployment and Imaging Tool

Теперь скопируйте файлы для среды WinPE в указанный каталог (создавать не нужно):

copype amd64 C:\tools\winpe

В данном случае я создаю файлы для среды WinPE x64. Можно использовать другие опции в зависимости от архитектуры: x86, arm или arm64.

генерация файлов для среды WinPE copype amd64

Теперь можно создать загрузочный ISO образ с WinPE:

MakeWinPEMedia /ISO C:\tools\winpe c:\tools\WinPE.iso

MakeWinPEMedia: создать ISO образ WINPE

Подготовка сервера сетевой установки TinyPXE

Теперь нужно настроить ваш PXE сервер:

  1. Распакуйте архив pxesrv.zip в каталог C:\tools\pxesrv;
  2. Перейдите в каталог C:\tools\pxesrv и создайте текстовый файл pxe_menu.txt со следующим содержимым:
    #!ipxe
    set boot-url http://${dhcp-server}
     #================ Main Menu =================
    menu iPXE boot menu
    item WinPEISO WindowsPE ISO
    choose target && goto ${target}
    #============ Main Menu Options =============
    :WinPEISO
    sanboot ${boot-url}/iso/WinPE.iso
    boot

    конфигурационный файл меню для pxe сервера

  3. Скопируйте полученный ранее файл WinPE.iso в каталог C:\tools\pxesrv\files\iso;
  4. Смонтируйте установочный ISO образ в виртуальный привод Windows и откройте общий сетевой доступ к нему (если хотите, можете открыть к нему анонимный доступ, но это не обязательно);
    общий доступ к каталогу с установочным образом Windows
  5. Запустите файл pxesrv.exe с правами администратора;
  6. Включите опцию HTTPd;
  7. Если ваш компьютер сам будет раздавать IP адреса по DHCP (Tiny PXE это умеет), отключите опцию ProxyDHCP. Убедитесь, что в полях Option 54 DHCP Server и Next-Server указан IP адрес вашего компьютера. В поле IP Pool start указано начало диапазона DHCP, убедитесь что этот диапазон не занят в вашей сети;
  8. В разделе Boot File укажите ipxe.pxe (для загрузки на BIOS устройствах) или ipxe-x86_64.efi (для UEFI устройств);
  9. В поле Filename if user-class=gPXE or IPXE укажите имя файла меню, который вы создали ранее pxe_menu.txt;
  10. Запустите PXE сервер, нажав кнопку Online;
    настройки Tiny PXE сервера для загрузки Windows PE по сети

Итак, ваш PXE сервер запущен и готов к работе. Если в Windows включен брандмауэр (проще), отключите его или разрешите входящий трафик для процесса pxesrv.exe по протоколам DHCP, PXE, HTTP, TFTPS и SMB.

Сетевая установка Windows 10 и 11 с PXE сервера

Теперь вам нужно загрузить ваш компьютер, на который вы хотите установить Windows, с PXE сервера. Компьютер должен находится в той же локальной сети (VLAN), что и компьютер с PXE сервером.

В настройках BIOS/UEFI компьютера выберите в качестве первичного устройства загрузки PXE.

загрузка компьютера по сети через PXE (EFI network)

При запуске среды PXE компьютер обнаружит в сети DHCP сервер, получит IP адрес и получит доступных опции в меню iPXE.

загрузочное меню PXE сервера

Компьютер загрузится по сети в среде WinPE.

В моем случае при тестировании загрузки с PXE сервера виртуальной машины VMWare с UEFI прошивкой появилась ошибка:

Could not describe SAN devices: Operation not supported
Could not boot image: Operation not supported https://ipxe.org/err/3c2220


Как оказалось, в UEFI прошивки виртуальной машины на моем хосте VMware ESXi есть баг:

This error indicates that your UEFI firmware has a bug that prevents the installation of the iSCSI boot firmware table (iBFT). Switch to booting in “legacy” BIOS mode rather than UEFI mode.

Пришлось переключить ВМ в режим BIOS и запускать PXE сервер с опцией ipxe.pxe. После этого пошла нормальная установка Windows по сети.

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

После инициализации среды командой
wpeinit
подключите ваш сетевой каталог, в который смонтирован установочный образ Windows. Выполните команду:

Net use E: \\192.168.13.202\e

Где
192.168.13.202
– имя компьютера на котором хранится установочный образ, а
E
– название общей папки.
Введите имя пользователя, с правами доступа к вашей Windows с PXE сервером.
подключение сетевого каталог с установочным образом Windows в WinPE

Запустите знакомый мастер установки Windows.

установка windows 11 по сети через pxe

Hello World,

Today, I’ll provide you some information about building up a custom PXE Server.  Microsoft offers deployment tools such as Windows Deployment Server  or even Microsoft deployment Toolkit 2010 or even more advanced product such as SMS or SCCM.

They are all great tools but they have “heavy” dependencies mainly on Active Directory.   You need to have a working Active Directory in order to take full advantages of all these products.  In some scenarios, it’s not possible to use these technologies.  But don’t panic ! You can create your own PXE Server/TFTP Server.  Usin a PXE server, you can easily deploy through your network OS images to capable pxe workstations and improve the overall process.

SETUP YOUR INFRASTRUCTURE

I’m assuming that you have no Active Directory available or reacheable.  Imagine a situation where you have to setup a staging area in a room with no network connection to the rest of your network.  You will need a switch and at least one computer (stand-alone) to host the PXE/TFTP services.

You have 2 options in order to create your PXE/TFTP infrastructure :

  • You can use ready to use tools such as TFTPD32.exe or TFTP Server from SolarWinds
  • You can try to tweak your windows system and get a TFTP server up an running in Minutes (more fun but more challenging may be !). I’ll provide some scripts and utilities to smooth your installation.

Option 1 : Using TFTP Server From Solarwinds

If you want to configure a TFTP server only and you are about to use DHCP,DNS services from Windows Operating System, the TFTP server from SolarWinds might fit yours needs.  With this free utility, you will be able to configure quickly your TFTP server.   You simply download the free tool from their site (you need to register to have access to the download ). On your future TFTP Server, you perform the Setup installation routine.  At the end of the procedure, you have shortcut on your desktop.  Double-click on the shortcut and you will see the following window.

On the menu, click on File and select Configure. the following windows will be displayed. As you can see, you cannot configure much. You can simply start the TFTP server and specify where to store your TFTP/PXE Boot files.

In order to have a fully working PXE infrastructure, you will need to install DHCP server and configure it to support PXE technology. You will also need to populate the tftp root directory with your pxe files and bootable images.  We will provide some explanation later in this post but first let’s check which other options do we have

Option 2 : Using TFTPD32.exe

You can download the tool from here.  The tool includes DHCP,TFTP,DNS services.  The tool can also be installed as a windows service if you need to. You have some advanced settings that can be configured but for this post we are just interested in the DHCP-TFTP Functionality.

Note: if you want to make TFTP32.exe a windows service, you need to download the correct package from their web site. You have 2 options: TFTP32.ex as stand alone and TFTP32.exe as service

Logon into your future TFTP Windows server and install the Tftpd32.exe software.  Based on your configuration, you will need to configure the DHCP settings and the basic TFTP Server Settings.To ease the setup, I’m assuming that you will be using the DHCP feature of the TFTPD32.exe utilty. After the installation, you can click on the shortcut created on the desktop and you will see a screen similar to the following :

If you click on settings button, you will be redirected to the following dialog box.  I have changed the Base  TFTP Directory to c:\tftproot. You can accept default or point to another folder if you prefer to.  Press OK when done

Finally, go to the DCHP server tab and fill in the requested information (if you intend to use the DHCP feature of TFTD32.exe)

As you can see, this is quite straightforward !  Using TFTPD32 can be useful, if you do not have the DHCP Service already installed on your Windows box. Like the previous option, we are not able to boot in PXE mode at this stage, we will need to populate the tftp root directory with the correct files. Note that in the DHCP configuration, you will need to provide the path of the boot file for the pxe server. Again no panic, we will explain that in the next lines.

Option 3 :  Build up  your “Custom”  TFTP Server

With this option, we will try to use only windows components in order to build up your TFTP/PXE server.  We will use a “old” recipe in order to have a working TFTP Server running on a Windows 2003 server.  You can configure a TFTP Server by using the following procedure

Step 1 : installing and Configuring the TFTP service

  • Copy the file tftpd.exe from %root%\system32\dllCache to %root%\system32 ( This is only possible for Windows 2003 Operating Systems. If you have Windows 2008 OS or later, you will need to copy the file from a Windows 2003 box.)
  • using the resource kit instsrv.exe, create a service using the following command

intsrv tftpd c:\winnt\system32\tftpd.  ( or you can use SC.exe)

  1. Start the service using the command net start tftpd
  2. Normally, after the service starts, it creates a folder  in %root%\tftpdroot
  3. To start the service automatically at boot time, in services.msc change to start automatically option

Additional information : if the tftpdroot is not automatically created, you need to created it manually. You need to check that a registry key has been created as well. If not, you need to created it manually. Navigate to HKLM\system\CurrentControlSet\Services\tftpd\Parameters. Create (if not existing) the key directory and in the value specify the location of the tftpdroot folder

Step 2 : installing and Configuring the DHCP service

You install the DHCP service via the Add/remove program applet.  You need to configure additional settings within the DHCP in order to have a working PXE server. The following options should be configured :

  1. Scope options : 066 Boot server  value :host name or IP Address of the Tftp/DHCP server
  2. Scope options : 067  boot file name                value:<%your pxeboot file%>)
  3. Restart the DHCP
  4. Scope option: 043 Vendor specific info         Value : 01 04 00 00 00 00 ff.
  5. add additional option via Netsh

C:\WINDOWS\system32>netsh
netsh>dhcp
netsh dhcp>server \\<server name> *OR* <server IP address>
netsh dhcp server>add optiondef 60 PXEClient String 0 comment=PXE support
netsh dhcp server>set optionvalue 60 STRING PXEClient

To verify that the Option 060 was added successfully enter the command:

netsh dhcp server>show optionvalue

Exit issuing command exit and restart your DHCP server.   You have a TFTP Server up and running with no third-party tools.  That’s cool !  Again, in order to have a working PXE Server, you will need to populate the TFTP ROOT Directory and ensure that the bootfile name option in your DHCP is set correctly.

BONUS

I have explained the manual process. You will get a small bonus ! You can find a batch file sample here that will help you in automating the setup of your TFTPD and DHCP Server. The Batch file is valid on Windows 2003 at the moment.  I’ll publish a little bit later a GUI that will be working with Windows XP or Windows 2003 and later (including Windows 2008)

Tftp directory content

Time to populate our tftp Directory.  We will upload all the necessary files into the TFTP directory in order for our pxe clients to boot into WINPE 2.0 or 3.0 enviromnent.  You can customize your WinPE boot image in order to add some additional tools and utilities and automate for example capture or dump of an image on a target PXE machine. This is out of scope of this post. but we will come back to that in some future posts.

So, what do you need to upload in this directory.  I have tried to keep to a minimum the number of files to be uploaded.  This is the content of my basic tftproot directory

As you can see, I’ve created a sub folder called Boot and copied there 5 files.  Where do you find these files ?  If you have a Windows VISTA/7 or windows 2008/R2 installation media, you can extract the following files from the  boot folder at the root of the DVD media

  • Boot.sdi

In the Source folder of your DVD, you have a boot.wim file as well.  You will need to mount this image (using imagex.exe utility) and extract the following file

  • pxeboot.0 (located in windows\boot\PXE inside the boot.wim )
  • Bootmgr.exe (located in windows\boot\PXE inside the boot.wim)

Finally,  you will need to create your own BCD file.  You can copy the following text into a batch file and run it on a Windows VISTA/7 or windows 2008 R2.   You will need then to upload a wim file into your directory.  You can use the boot.wim file from the DVD media and rename it in order to reflect the name you want to use in your BCD File (in my case, I’ve renamed the boot.wim file in winpe.wim)

Rem Creates BCD (boot configuration data) for Windows PE 3.0
set BCD-File=c:\tftproot\boot\BCD
del %BCD-File%
Bcdedit /createstore %BCD-File%
Bcdedit /store %BCD-File% /create {ramdiskoptions} /d “Ramdisk options”
Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdidevice boot
Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
for /f “tokens=1-3” %%a in (‘Bcdedit /store %BCD-File% /create /d “WinPE x86” /application osloader’) do set guid1=%%c
Bcdedit /store %BCD-File% /set %guid1% systemroot \Windows
Bcdedit /store %BCD-File% /set %guid1% detecthal Yes
Bcdedit /store %BCD-File% /set %guid1% winpe Yes
Bcdedit /store %BCD-File% /set %guid1% osdevice ramdisk=[boot]\boot\winpe.wim,{ramdiskoptions}
Bcdedit /store %BCD-File% /set %guid1% device ramdisk=[boot]\boot\winpe.wim,{ramdiskoptions}
Bcdedit /store %BCD-File% /create {bootmgr} /d “Windows Vista BootManager”
Bcdedit /store %BCD-File% /set {bootmgr} timeout 30
Bcdedit /store %BCD-File% /set {bootmgr} displayorder %guid1%
Bcdedit /store %BCD-File% /enum all

Download the CreateBCD.zip File

Final note:  because I’ve created a boot sub folder, I had to change the boot file name value in the DHCP Server from pxeboot.0 to \boot\pxeboot.0

That’s it for this post !  This is a first step into deployment tasks.  This infrastructure will be useful in many many scenarios

Till next time see ya

Загрузочный сервер — как загрузочная флешка, только сервер и по сети

Время на прочтение
12 мин

Количество просмотров 438K

Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!

Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.

Вот такое меню встречает нашу команду инженеров при загрузке с PXE

Под катом вас ждет описание всех настроек, а так же небольшой сюрприз.

Начало

Возьмем за основу, что свежеустановленный Debian Wheezy уже весело подмигивает нам консолью.
Подготовим базу для дальнейших манипуляций. Установить и настроить нам потребуется:

  1. TFTP сервер
  2. Samba
  3. Syslinux
  4. DHCP сервер
  5. HTTP сервер
  6. NFS сервер

1. TFTP

# aptitude install tftpd-hpa

приведем конфиг /etc/default/tftpd-hpa к виду

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp" #пусть к корню tftp
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure  -l -v -m /etc/tftpd.remap" #файл для замены слешей в путях с windows style на linux style

и поместим в /etc/tftpd.remap вот такую строку

rg \\ /

UPD, дополнение от читателя Aleksey Shipilev

Повыдирал себе волос, пока отдебажил tftp.
Что на ThinkPad X201i, что в VirtualBox загрузка отваливалась с:
PXE-E32: TFTP Open timeout

Судя по всему, PXE агенты умудрились быть не полностью совместимыми, полечилось добавлением «-r blksize»:
TFTP_OPTIONS=»—secure -l -v -r blksize»

2. Samba

# aptitude install samba

В конец файла /etc/samba/smb.conf добавим информацию о папке, где будут лежать инсталляционные файлы Windows.

[images]
comment = images
path = /srv/tftp/images
create mask = 0660
directory mask = 0771
writable = yes
guest ok=yes

Cоздаем папку, даем права и рестартим самбу

# mkdir /srv/tftp/images
# chmod 777 /srv/tftp/images
# service samba restart

3. Syslinux
Скачиваем и заливаем в корень TFTP сервера все необходимое

# cd /tmp
# wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.02.tar.gz  #только с этой версией удалось подружить инсталлятор ESXi
# tar -xf syslinux-4.02.tar.gz
# cd syslinux-4.02/
# find ./ -name "memdisk" -type f|xargs -I {} cp '{}' /srv/tftp/
# find ./ -name "pxelinux.0"|xargs -I {} cp '{}' /srv/tftp/
# find ./ -name "*.c32"|xargs -I {} cp '{}' /srv/tftp/

Перейдем к настройке

# cd /srv/tftp/
# mkdir pxelinux.cfg
# cd pxelinux.cfg

Создадим конфиг основного меню и внесем начальные настройки

# cat > default
ui vesamenu.c32                  
PROMPT 0
menu background background.jpg
menu title ServerClub PXE boot menu

LABEL bootlocal
   menu label Boot from first HDD
   kernel chain.c32
   append hd0 0
   timeout 120
 TEXT HELP
The system will boot after the time is up
 ENDTEXT

4. DHCP

# aptitude install isc-dhcp-server

дефолтный конфиг переместим, создадим вместо него свой и перезапустим DHCP демон

# mv /etc/dhcp/dhcpd.conf{,_orig}
# cat > /etc/dhcp/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4;
option ip-forwarding on;
default-lease-time 60;
min-lease-time 120;
max-lease-time 300;
authoritative;
ddns-update-style interim;
log-facility local7;
shared-network PXE-Netwotk {
  subnet 10.0.10.0 netmask 255.255.255.0 {
  range 10.0.10.10 10.0.10.254;
  option routers 10.0.10.1;
  option subnet-mask 255.255.255.0;
  option domain-name-servers 8.8.8.8, 8.8.4.4;
  filename "pxelinux.0";
  next-server 10.0.10.1;
  option root-path "10.0.10.1:/srv/tftp/";
  }
}
# service isc-dhcp-server restart 

Спойлер для тех, у кого в роли DHCP сервера выступает MikroTik

address=10.0.10.0/24 gateway=10.0.10.1 dns-server=8.8.8.8, 8.8.4.4 wins-server="" ntp-server=212.20.50.208 caps-manager="" domain="domain.local" next-server=10.0.10.1 boot-file-name="pxelinux.0" dhcp-option=""

Спойлер для тех у кого DHCP на Cisco

network <ip сети> <маска>
ip dhcp pool <Имя пула>
bootfile pxelinux.0
next-server <IP сервера tftp>
default-router <Шлюз>
option 66 ascii «Имя сервера»
dns-server <DNS сервера>
option 150 <IP сервера tftp>
domain-name <доменное имя>

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

Поэтому необходим еще ряд нехитрых манипуляций

# sed -i 's/\#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# sysctl -p
# iptables -t nat -I POSTROUTING -s 10.0.10.0/24 -o eth0 -j MASQUERADE
# sed -i 's/INTERFACES=\"\"/INTERFACES=\"eth1\"/g' /etc/default/isc-dhcp-server
# service isc-dhcp-server restart 

5. HTTP
Пока просто установим, а зачем он нам понадобился будет понятно далее по тексту.

# aptitude install apache2

6. NFS
Ровно так же как и предыдущий пункт.

# aptitude install nfs-kernel-server

Если все сделано правильно, то при загрузке какой-либо машины с этого DHCP/PXE/TFTP сервера мы увидим следующее:

Основа готова!

Двигаемся далее.

Научим сервер устанавливать различные ОС

Для установки нам будут доступны:

  1. Windows 2008R2/20012R2
  2. Debian 6/7
  3. Centos 6/7
  4. Ubuntu 12.04/12.10/14.04/14.10
  5. FreeBSD 9.2/10.1
  6. VMware ESXi 5.0/5.5

Структура меню, а следовательно и файл /srv/tftp/pxelinux.cfg/default притерпели изменения.

Теперь конфиг главного меню PXE сервера теперь выглядит так

ui vesamenu.c32                  
PROMPT 0
menu background background.jpg
menu title ServerClub PXE boot menu

LABEL bootlocal
   menu label Boot from first HDD
   kernel chain.c32
   append hd0 0
   timeout 120
 TEXT HELP
The system will boot after time is up.
 ENDTEXT
    
LABEL Windows           ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/windows 

LABEL Linux             ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/linux

LABEL FreeBSD           ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/bsd

LABEL VMvare            ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/vmware

Листинг директории /srv/tftp/pxelinux.cfg/

root@pxe:/srv/tftp/pxelinux.cfg# ls -l
total 32
-rw-r--r-- 1 tftp tftp  475 Фев 17 18:04 bsd
-rw-r--r-- 1 tftp tftp  881 Фев 17 18:00 default
-rw-r--r-- 1 tftp tftp 1316 Фев 17 18:01 linux
-rw-r--r-- 1 tftp tftp  363 Фев 17 18:03 vmware
-rw-r--r-- 1 tftp tftp  312 Фев 18 00:01 windows

Под спойлером содержимое конфига каждого из подпунктов меню представленных выше

windows

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE Windows

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL W2K8_x64_R2 & W2K12_x64_R2 (menu inside)
	kernel Boot/pxeboot.0


LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

linux

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE Linux

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL Debian-7-x64
        kernel debian/7/linux
        append initrd=debian/7/initrd.gz

LABEL Debian-6.0.6-x64
        kernel debian/6/linux
        append initrd=debian/6/initrd.gz

LABEL CentOS-7-x64
        kernel centos/7/vmlinuz
        append initrd=centos/7/initrd.img method=http://mirror.mirohost.net/centos/7/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000

LABEL CentOS-6-x64
        kernel centos/6/vmlinuz
        append initrd=centos/6/initrd.img method=http://mirror.mirohost.net/centos/6/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000

LABEL Ubuntu-14.10-x64
        kernel ubuntu/14.10/linux
        append initrd=ubuntu/14.10/initrd.gz expert dmraid=true
      
LABEL Ubuntu-14.04-x64
        kernel ubuntu/14.04/linux
        append initrd=ubuntu/14.04/initrd.gz expert dmraid=true

LABEL Ubuntu-12.10-x64
        kernel ubuntu/12.10/linux
        append initrd=ubuntu/12.10/initrd.gz expert dmraid=true

LABEL Ubuntu-12.04_4-x64
        kernel ubuntu/12.04_4/linux
        append initrd=ubuntu/12.04_4/initrd.gz expert dmraid=true

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

bsd

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE BSD

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL FreeBSD-10.1-x64
        kernel memdisk
        initrd freebsd/10/mfsbsd-se-10.1-RELEASE-amd64.iso
        append iso raw

LABEL FreeBSD-9.2-x64
        kernel memdisk
        initrd freebsd/9/fbsd92.iso
        append iso raw


LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

vmware

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE VMware

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL VMware-5.5
        kernel vmw/5.5/mboot.c32
        append -c /vmw/5.5/boot.cfg ks=http://10.0.10.1/vmw5.5/ks.cfg +++

LABEL VMware-5.0
	kernel vmw/5.0/mboot.c32
	append -c /vmw/5.0/boot.cfg ks=http://10.0.10.1/vmw5.0/ks.cfg +++

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

Пути к папкам, где лежат установочные файлы для каждой из ОС, описаны относительно корня TFTP сервера, т.е. /srv/tftp.
Например для FreeBSD указано

LABEL FreeBSD-10.1-x64
        kernel memdisk
        initrd freebsd/10/mfsbsd-se-10.1-RELEASE-amd64.iso
        append iso raw

следовательно в корне TFTP нужно создать папки freebsd/10/, при этом обратите внимание на права

ls -l /srv/tftp/freebsd/10/
total 193780
-rw-r--r-- 1 tftp tftp 198430720 Фев 17 18:17 mfsbsd-se-10.1-RELEASE-amd64.iso

У всех должно быть право на чтение — это правило справедливо для всех файлов отдаваемых по TFTP.
И еще пара слов о установке FreeBSD.
Логин / пароль для входа в загружаемый iso: root / mfsroot(либо root без пароля).
Плюс пара примеров скриптов инсталяции FreeBSD на ZFS:
1. RAID6 из 4-х дисков.
2. RAID1 из 2-х дисков.

О том как подготовить Windows к установке с PXE мы писали ранее.
Различие с данной инсталляцией составляет лишь то, что здесь мы можем установить и Windows 2008R2 и Windows 2012R2(впрочем и Windows 7/8 тоже, нужно только подготовить файлы дистрибутива и winpe соответствующим образом). После загрузки winpe мы монтируем папку /srv/tftp/images/, где содержаться файлы для установки ОС от Microsoft:

ls -l /srv/tftp/images/
total 8
drwxr-xr-x 6 root root 4096 Фев 17 22:19 w2k12r2
drwxr-xr-x 7 tftp tftp 4096 Фев 17 19:05 w2k8r2

и запускаем нужный инсталятор.
Для автоматизации, через startnet.cmd, я набросал вот такое меню:

Теперь осталось разобраться с VMware.
Как вы заметили, конфиг для установки гипервизоров несколько отличается от остальных — именно тут нам и понадобится HTTP сервер.
В /var/www создадим папки vmw5.5, vmw5.0, а в папках сделаем симлинки на конфиг

# cd /var/www
# mkdir vmw5.5
# cd  vmw5.5/
# ln -s /srv/tftp/vmw/5.5/ks.cfg 
# mkdir ../vmw5.0
# cd ../vmw5.0/
# ln -s /srv/tftp/vmw/5.0/ks.cfg 

О том как подготовить, например, Debian к установке с PXE написано здесь, но я на этом останавливаться не стану.

Добавим способность загружать различные дисковые утилиты и тест памяти

Данный раздел будет содержать:

  1. Memtest86+
  2. Clonezilla-live
  3. SystemRescueCD
  4. MHDD

Конфиги разместились здесь

default

ui vesamenu.c32                  
PROMPT 0
menu background background.jpg
menu title ServerClub PXE boot menu

LABEL bootlocal
   menu label Boot from first HDD
   kernel chain.c32
   append hd0 0
   timeout 120000
 TEXT HELP
The system will boot after time is up.
 ENDTEXT
    
LABEL Windows                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/windows 

LABEL Linux                       ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/linux

LABEL FreeBSD                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/bsd

LABEL VMvare                      ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/vmware


LABEL HDD and RAM utils           ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/du

du

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE HDD and RAM utils

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL Memtest86+
	kernel memtest/memtest


label Clonezilla-live
	MENU LABEL Clonezilla Live
	KERNEL clonezilla/vmlinuz
	APPEND initrd=clonezilla/initrd.img boot=live config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" keyboard-layouts="" ocs_live_batch="no" locales="" vga=788 nosplash noprompt fetch=tftp://10.0.10.1/clonezilla/filesystem.squashfs


label SystemRescueCD
	kernel SystemRescueCD/isolinux/rescue64
	append initrd=SystemRescueCD/isolinux/initram.igz dodhcp nfsboot=10.0.10.1:/srv/tftp/SystemRescueCD

LABEL MHDD
        kernel memdisk
        initrd mhdd/mhdd32ver4.6.iso
        append iso raw



LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

А я расскажу зачем мы ставили еще и NFS сервер.
Как видно из конфига загрузки SystemRescueCD, необходимые этому LiveCD файлы он подтягивает монтируя каталог по протоколу NFS. Сервер уже установлен, остается только отредактировать /etc/exports и перезапустить серверный демон.

# cat >> /etc/exports 
/srv/tftp/SystemRescueCD/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)
# service nfs-kernel-server restart

Предполагаю у вас возник резонный вопрос — «Что тут делает LiveCD, если для них есть отдельный пункт?»
SystemRescueCD содержит массу полезных программ для работы с диском(например таких как GParted и testdisk) и поэтому он доступен и здесь и в LiveCD.

LiveCD

В набор наших LiveCD войдут:

  1. Debian 7 LiveCD
  2. HirensBootCD
  3. Trinity Rescue Kit CD
  4. SystemRescueCD
  5. Plop Live

Конфиги

в конец default добавилось

LABEL LiveCDs                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/livecds

livecds

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE LiveCDs

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

LABEL Debian LiveCD
        KERNEL Debian7live/vmlinuz
	APPEND initrd=Debian7live/initrd boot=live fetch=tftp://10.0.10.1/Debian7live/filesystem.squashfs root=/dev/ram0 rw

LABEL HirensBootCD
	MENU LABEL Hiren's Boot CD
	KERNEL memdisk
	APPEND iso initrd=hirens/hirens.iso

LABEL Trinity Rescue Kit CD
	kernel trk/kernel.trk
	append initrd=trk/initrd.trk ramdisk_size=65536 root=/dev/ram0 vga=788 splash=verbose pci=conf1 trkmenu timeout 100 trknfs=10.0.10.1:/srv/tftp/trk ip=dhcp

LABEL SystemRescueCD
	kernel SystemRescueCD/isolinux/rescue64
	append initrd=SystemRescueCD/isolinux/initram.igz dodhcp nfsboot=10.0.10.1:/srv/tftp/SystemRescueCD

LABEL Plop Live
	KERNEL plop/bzImage
	APPEND initrd=plop/initramfs.gz vga=normal nfsmount=10.0.10.1:/srv/tftp/plop



LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

Для загрузки Trinity Rescue Kit CD и Plop Live в /etc/exports нужно добавить строки:

/srv/tftp/trk/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)
/srv/tftp/plop/ 10.0.10.1/255.255.255.0(ro,no_subtree_check,all_squash,insecure,anonuid=1000,anongid=1000)

и отправить команду рестарта NFS демону.

Несколько слов о выбраных LiveCD.
Debian 7 LiveCD
Этот CD — сборка одного из наших инженеров, включающая в себя следующее:

Логин / пароль: root / ServerClub

HirensBootCD
Едва ли нуждается в представлении, содержит множество полезных утилит.
Подробнее можно ознакомиться здесь.
Грузится достаточно долго, не работает MiniXP и Linux. Остальные утилиты доступны для использования.

Trinity Rescue Kit CD
Со слов разработчиков, создан для восстановления ОС Windows.
Содержит утилиты для сброса паролей, антивирусы, программу для клонирования «компьютера» по сети(при чем на несколько компьютеров одновременно), а так же многое другое.
Подробнее здесь.

SystemRescueCD
Основан на Gentoo, предназначен для восстановления Linux систем.
Включает в себя большое количество всевозможных программ для администрирования, со списком можно ознакомится по ссылке.

Plop Live
LiveCD с тремя полноценными DE на выбор, а так же необходимым админским софтом.

Антивирусы

  1. Kaspersky Rescue Disk 10
  2. AVG Rescue CD

В отдельном представлении оба антивируса не нуждаются.
О Kaspersky Rescue disk подробнее можно прочесть здесь.
С описанием AVG Recsue CD вас ознакомит данный url.

Итоговый конфигурационный файл основного меню, а так же файл меню антивирусов

default

ui vesamenu.c32                  
PROMPT 0
menu background background.jpg
menu title ServerClub PXE boot menu

LABEL bootlocal
   menu label Boot from first HDD
   kernel chain.c32
   append hd0 0
   timeout 120000
 TEXT HELP
The system will boot after time is up.
 ENDTEXT
    
LABEL Windows                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/windows 

LABEL Linux                       ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/linux

LABEL FreeBSD                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/bsd

LABEL VMvare                      ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/vmware


LABEL HDD and RAM utils           ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/du

LABEL LiveCDs                     ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/livecds

LABEL Antiviruses                 ->
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/av

av

PROMPT 0
UI vesamenu.c32
MENU BACKGROUND background.jpg
MENU TITLE Antivirues

LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default


LABEL Kaspersky Antivirus
	KERNEL kav/rescue
	APPEND initrd=kav/rescue.igz root=live rootfstype=auto vga=791 init=/init kav_lang=ru udev liveimg doscsi nomodeset

LABEL Kaspersky Antivirus (text mode)
	KERNEL kav/rescue
	APPEND initrd=kav/rescue.igz root=live rootfstype=auto vga=791 init=/init kav_lang=ru udev liveimg nox kavshell noresume doscsi nomodeset


label AVG
        menu label AVG Rescue CD
        kernel avg/vmlinuz
        append max_loop=255 vga=791 initrd=avg/initrd.lzm init=linuxrc reboot=bios

label AVG nofb
        menu label AVG Rescue CD with Disabled Framebuffer
        kernel avg/vmlinuz
        append max_loop=255 video=vesafb:off initrd=avg/initrd.lzm init=linuxrc reboot=bios

label AVG vgask
        menu label AVG Rescue CD with Resolution Selection
        kernel avg/vmlinuz
        append max_loop=255 initrd=avg/initrd.lzm init=linuxrc vga=ask reboot=bios



LABEL <- Main Menu
      KERNEL vesamenu.c32
      APPEND pxelinux.cfg/default

Заключение, оно же и сюрприз

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

В качестве сюрприза предлагаю вам два варианта нашей сборки, доступные по ссылкам ниже:

  1. Архив со всем контентом /srv/tftp (ссылка на торрент файл, прямая ссылка)
  2. Архив всей ОС (ссылка на торрент файл, прямая ссылка)

В первом случае необходимо самостоятельно подготовить сервер(в этом поможет глава «Начало» данного эпоса), разархивировать содержимое архива и внести корректировки сообразно реалиям вашей среды.

Второй случай подразумевает установку на голое железо или виртуальную машину.
Вкратце шаги по развертыванию сборки из полного архива ОС будут такими:
1. Загрузиться с Linux LiveCD.
2. Разметить диск и отформатировать разделы.
3. Примонтировать «/» раздел.
4. Распаковать архив.
5. Установить загрузчик.
6. Перезагрузиться.
7. Настроить ОС в соответствии вашей сети и начать пользоваться.
Логин / пароль: root / ServerClub.
ВАЖНО: Если в вашей сети есть работающий dhcp сервер, то перед запуском нашей сборки отключите в ней автостарт dhcp.

Полезные ссылки

Как подготовить Kaspersky Rescue disk 10 для загрузки с PXE
Wiki syslinux
Как подготовить ESXi для установки с PXE
C PXE не грузится интсаллятор ESXi. Решение
От чего с PXE не грузится интсаллятор ESXi. Решение

За сим заканчиваю, благодарю за внимание!

Для тех, у кого нет аккаунта на Хабре.
Если у вас возникнут вопросы/замечания, то пишите мне на почту — er[dog]serverclub.com.

UPDATE – 04-03-2019: try serva https://www.vercot.com/~serva/ instead of tftpd32, it supports uefi.

Download the “Portable” version of the Tftpd32 software.

http://tftpd32.jounin.net/

All of my source files: https://drive.google.com/open?id=1FAIPPtIogFOk_uklAS_D7YxLrxI36Hly

My TFTPROOT folder contents and source

Files were pulled from Windows 10 ADK installation.

C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\Media =>

TFTPROOT\bootmgr.exe
TFTPROOT\Boot\en-us\bootmgr.exe.mui
TFTPROOT\Boot\en-us\memtest.exe.mui
TFTPROOT\Boot\Fonts\*.*
TFTPROOT\Boot\Resources\bootres.dll
..Media\EFI\Microsoft\Boot\BCD => TFTPROOT\Boot\BCD
..Media\EFI\Microsoft\Boot\boot.sdi => TFTPROOT\Boot\bood.sdi

Opened “C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\en-us\winpe.wim” with 7-zip and copied and renamed the following file:

TFTPROOT\pxeboot.n12 => \pxeboot.0

Copied “C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\en-us\winpe.wim” and renamed to “boot.wim”

winpe.wim => TFTPROOT\sources\boot.wim

Download the latest syslixuxXX.zip from https://www.kernel.org/pub/linux/utils/boot/syslinux/

Extracted with 7zip, searched and copied out the following files to the TFTPROOT folder:

TFTPROOT\ldlinux.c32
TFTPROOT\libcom32.c32
TFTPROOT\libutil.c32
TFTPROOT\memdisk
TFTPROOT\menu.c32
TFTPROOT\pxelinux.0
TFTPROOT\vesamenu.c32

Lastly, I created a “default” file in a”pxelinux.cfg” folder with the following content:

DEFAULT vesamenu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
TIMEOUT 200

MENU TITLE Boot Menu
LABEL ^1 LABEL WinPE (pxeboot.0)
MENU WINPE1
KERNEL pxeboot.0

LABEL ^2 Label Windows PE (winpe.iso)
MENU WINPE2
linux memdisk
initrd winpex64.iso
APPEND iso bigraw

Windows Deployment Services can not be installed on Windows Server Core unfortunately — it still requires a Windows Server install with a GUI (Desktop Experience). Luckily we can still install it using PowerShell and the command line. In this post I’ll go through the initial steps on how to deploy and configure a WDS server using command line and PowerShell.

Installing Windows Server

Boot the server from the Windows Server media and on the “Select the Operating System you want to install” screen, select the option “Windows Server Standard” or “Datacenter” edition with “Desktop Experience” in brackets.

Please note: You can no longer add and remove the GUI (Desktop Experience) with Windows Server 2016 onwards as you could with Windows Server 2012/2012 R2. This is due to numerous problems with keeping the installation and removal process consistent with updates. With Windows Server 2016 and above the only way to add or remove the GUI is to re-install and select one of the server editions with the “Desktop Experience” option.

Initial Configuration

Once the install process has completed, you will be prompted to set the Administrator password.

  1. Set the local “Administrator” password.
  2. Log in to Windows as the Administrator user.
  3. Open an elevated command prompt by pressing “Win + X” and selecting “Command Prompt (Admin)” from the menu.
  4. Type sconfig to get the Server Configuration menu.
  5. You’ll need to configure at least the Network Settings — IP address, subnet mask, gateway, and DNS.
  6. You may want to enable Remote Desktop.
  7. Add the server to the domain — you’ll be asked if you’d like to change the computer name, and prompted to restart the server.
  8. After the restart, log in as a user with administrator privileges to the server.

Important note: Windows Server 2016 shipped with a bug that causes it to fail to get updates from WSUS out of the box. To work around it you should update directly from the internet or download and install the latest Cumulative Update for Windows Server 2016, which at the time of writing is KB4093120, download here.

Additional Storage Configuration

You may want to configure additional locally attached disks or iSCSI/MPIO storage. Creating new volumes that are locally attached can be done via the diskpart command line tool. Below are the commands to create a new, NTFS formatted volume, with the drive letter of E:\ and the name “Data”, from a second disk in the server using the diskpart tool. First, run diskpart from the command line, then use the following commands:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
list disk
select disk 1
online disk
attributes disk clear readonly
clean
convert mbr -or gpt
create partition primary
select part 1
active
format fs=ntfs label="Data" quick
assign letter E:
list volume

The MPIO feature must be installed before the tool is available. You can do this via PowerShell:

1
Install-WindowsFeature -Name 'Multipath-IO'

When MPIO is installed you can load the MPIO utility using mpiocpl. For the iSCSI utility you can use iscsicpl. iSCSI is installed as part of the base Windows Server feature set.

Install Windows Deployment Services (WDS)

If you’ve just logged on to the server, open an elevated command prompt as before, by pressing “Win + X” and selecting “Command Prompt (Admin)” from the menu. Type “PowerShell” into the command line window before running any of the commands below.

First we need to install the WDS feature:

1
Install-WindowsFeature -Name WDS

Now we need to run some post install tasks. The following command will initialize the WDS server and use the E:\ drive to store it’s content.

1
wdsutil /initialize-server /server:SERVER-NAME /reminst:"E:\RemoteInstall"

WDS is now installed and the initial configuration is complete, but some further configuration is required via the WDS Microsoft Management Console (MMC).

  1. Log in to the server as a user with administrator privileges.
  2. Open the “Windows Deployment Services MMC” under “Windows Administrative Tools” in the Start Menu.
  3. Expand the “Servers” node and Right click on the server-name.contoso.com and select “Properties”.
  4. On the “PXE Response” tab select the “Respond to all client computers (known and unknown)” do not tick the “Require administrator approval option”.
  5. Click “Apply” and close the window.

To add a ‘LiteTouch’ boot image from MDT to WDS:

  1. Log in to the server as a user with administrator privileges.
  2. Open the “Windows Deployment Services MMC” under “Windows Administrative Tools” in the Start Menu.
  3. Navigate to “Servers” > server-name.contoso.com > “Boot Images”.
  4. Right click in the empty window, and select “Add Boot Image”.
  5. Navigate to the “Boot” folder in the deployment share of MDT and select LiteTouchPE_x64.wim.
  6. Complete the wizard.

To test the new boot image, create a new VM in Hyper-V with the following configuration:

  • Generation 1
  • 2x vCPUs
  • 4GB of RAM
  • Legacy Network Adapter with access the local network.
  • Virtual Hard Drive of at least 80GB.
  • Boot from the legacy Network Adapter.
  • If using Hyper-V on Windows 10 1709 and above, make sure “Use Automatic Checkpoints” is disabled.

Start the Virtual Machine and you should be prompted to press F12 to boot and the deployment environment should start just as if you were booting from the LiteTouchPE_x64.iso. If the VM is not booting from the network, it could be that the VM is on a different VLAN. To enable PXE booting on different VLANs you’ll need to add the IP address of the WDS server as a IP helper address on each VLAN on the routing switch.

Configuration for BIOS and UEFI Clients

If you have a mixture of devices with both BIOS and UEFI firmware that you wish to PXE boot, some additional configuration may be required depending on the network and versions of DHCP and WDS. On a network with a Windows Server 2016 DHCP server, WDS server and Cisco switches with a helper address configured, I haven’t needed to do this configuration but I wanted to include it for completeness. Your mileage may vary. Most of the following information is from a very helpful video from BranchCache Bob — here’s the video. It is assumed that you have a Microsoft Windows Server running DHCP. The first thing to do is to define the vendor classes for both the BIOS PXE Client and the UEFI PXE Client.

  1. Go to “DHCP”, right-click on “IPv4”
  2. In the “DHCP Vendor Classes” window, click Add
  3. For the “Name” enter “PXEClient (UEFI x86)”
  4. For the “Description” enter whatever you want
  5. Under the “ASCII” text enter PXEClient:Arch:00006 — Important Note: you will not be able to paste this text, and it’s also case-sensitive
  6. Click OK to add it to the list
  7. Now repeat steps 2 — 6 for “PXEClient (UEFI x64)” with PXEClient:Arch:00007 as the ASCII value.
  8. Finally, repeat steps 2 — 6 for “PXEClient (BIOS x86 & x64)” with PXEClient:Arch:00000 (five zero’s) as the ASCII value.

or using PowerShell:

1
2
3
Add-DhcpServerv4Class -Name "PXEClient (UEFI x64)" -Type Vendor -Data "PXEClient:Arch:00007"
Add-DhcpServerv4Class -Name "PXEClient (UEFI x86)" -Type Vendor -Data "PXEClient:Arch:00006"
Add-DhcpServerv4Class -Name "PXEClient (BIOS x86 & x64)" -Type Vendor -Data "PXEClient:Arch:00000"

You should now have three additional vendor classes.

DHCP Vendor Classes

Now we need to create policies in DHCP so that the correct files are served to the correct clients. You will need to do this for each DHCP scope.

  1. Go to “DHCP” and expand the scope you wish to create a policy for
  2. Right-click on “Policies” and choose “New Policy”
  3. Enter “PXEClient (UEFI x64)” for the name
  4. Enter a “Description”, or leave it blank. Click Next
  5. On the “Configure Conditions for the policy” screen, click Add
  6. In the “Add/Edit Condition” window, click the “Value:” drop down menu
  7. Choose the “PXEClient (UEFI x64)” vendor class you created earlier
  8. Tick the “Append wildcard” check box and then click Add and finally OK
  9. Click Next on the “Configure Conditions for the policy” screen
  10. On the “Configure settings for the policy” screen, click No for the “Do you want to configure an IP address range for the policy”. Click Next
  11. “Please Note:” if DHCP is on the same server as WDS, you will need to set option 060, if WDS is on a different server, you do not need to set option 060
  12. On the “Configure settings for the policy” screen, scroll down until you see options “060” (if applicable), “066” and “067”
  13. Tick option “060” and enter “PXEClient” if applicable
  14. Tick option “066” and enter either the FQDN or the IP address of the WDS server.
  15. Tick option “067” and enter boot\x64\wdsmgfw.efi — this is the x64 UEFI boot file for WDS. Click Next.
  16. On the “Summary” screen, if all the details are correct, click Finish
  17. Now repeat steps 2 — 14 for “PXEClient (UEFI x86)” with boot\x86\wdsmgfw.efi as option “067”
  18. Finally, repeat steps 2 — 14 once again for “PXEClient (BIOS x86 & x64)” with boot\x64\wdsnbp.com as option “067” and leave option “060” empty

or using PowerShell:

1
2
3
4
5
6
7
Add-DhcpServerv4Policy -Name "PXEClient (UEFI x64)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (UEFI x64)*"
Add-DhcpServerv4Policy -Name "PXEClient (UEFI x86)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (UEFI x86)*"
Add-DhcpServerv4Policy -Name "PXEClient (BIOS x86 & x64)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (BIOS x86 & x64)*"

Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (UEFI x64)" -OptionId 067 -Value "boot\x64\wdsmgfw.efi"
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (UEFI x86)" -OptionId 067 -Value "boot\x86\wdsmgfw.efi"
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (BIOS x86 & x64)" -OptionId 067 -Value "boot\x64\wdsnbp.com"

The -ScopeId should be the IP range of the DHCP scope you want to add the policy to.

Don’t forget to repeat the above for each DHCP scope you wish to PXE boot from. In DHCP if you expand the “Scope Options” folder you should see the new options you just created and under “Policy Name” should be the names of the policies you just created.

You should now be able to boot both a UEFI and BIOS devices from the network. Please note, if DHCP is installed on the same server as WDS, you will need to check both the “Do not listen on DHCP ports” and “Configure DHCP options to indicate that this is also a PXE server” options.

Support My Work

If you would like to support me, please check out the links below.

  • Patreon
  • PayPal

If you have any questions or comments please leave them below.

Thanks
-Mike

  • Как развернуть postgresql на windows
  • Как развернуть домен на windows server 2012
  • Как разблокировать скорость интернета windows 10
  • Как развернуть ntp сервер на windows
  • Как разблокировать системного администратора windows 10