PXE Booting Guide

  1. Configure DHCP Server
    Configuration below is for isc-dhcp-server on Linux:

# For hardware LAN Boot ROMs:
option tftp-server-address;
filename "pxelinux.0";

# For HyperV Guests:
# option 60 = client identifier
option dhcp-client-identifier "PXEClient";
# option 66 = TFTP server name
option tftp-server-name "";
# option 67 = Bootfile name
option bootfile-name "pxelinux.0";

2. Configure TFTP Server
On Linux, tftp-hpa is recommended, with a directory structure similar to the below:

/srv/tftp/pxelinux.0 (PXE Kernel)
/srv/tftp/pxelinux.cfg/default (Syslinux boot menu)
/debian-installer/... (containing netboot files for Debian installer)
/sysresccd/... (containing System Rescue CD boot files)

3. Create a boot menu, similar to the following:
prompt 1
timeout 100
default boot_hd0
LABEL boot_hd0
MENU LABEL Boot from first hard drive
COM32 chain.c32
LABEL Debian
MENU LABEL Debian installer
KERNEL debian-installer/amd64/boot-screens/vesamenu.c32
APPEND debian-installer/amd64/boot-screens/menu.cfg
LABEL sysresccd
MENU LABEL System Rescue
KERNEL sysresccd/boot/x86_64/vmlinuz
INITRD sysresccd/boot/x86_64/sysresccd.img
APPEND ... archiso_http_srv= ...

4. BIOS vs. UEFI
BIOS and UEFI boot loaders are not compatible.

With a Linux DHCP server we are able to specify different file names based on the requesting architecture type. For configuration details refer to: https://wiki.syslinux.org/wiki/index.php?title=PXELINUX#UEFI

Windows DHCP servers are unable to be configured to allocate different options for different architectures. i.e. the bootfile name (option 67) needs to be manually changed between the BIOS or UEFI files. Instead IP Helpers can be implemented on switches or routers, where DHCP Helpers are used, which enable the switch/router to specify the boot file appropriate to the client. for more information see: