PXE is a fast and easy way to install operating systems over the network; especially attractive compared to the painfully slow alternative of something like iLO remote media. Microsoft offers a PXE installation solution called Windows Deployment Services (WDS) and PXELINUX is an excellent utility for network installs of Linux or VMware ESXi, Firmware Maintenance DVDs, rescue CDs, and pretty much anything else.
What to do in a heterogeneous environment? This can be a challenge for PXE because it requires DHCP — it is difficult to have more than one PXE server on a network. While it is possible to configure a WDS server to install non-Windows operating systems, NFS support can be an issue. Besides that, do you really want to install Linux via IIS?
Deploying a Linux system configured with DHCP, TFTP, HTTP, and NFS on a separate VLAN is certainly one approach. But wouldn’t it be convenient if the WDS and Linux PXE servers could coexist peacefully on the same network?
There is a way…
As it turns out, thanks to the lesser-known pxechain utility, it is possible to seamlessly jump from one PXE host to another. With a few tweaks to your WDS server, you can continue to use it for Windows OS installs and bounce over to a Linux host for Linux, ESXi, or rescue-CD purposes.
Windows Deployment Server Modifications
To make this possible, alter WDS to serve up a PXELinux menu with options to either proceed with WDS or jump over to a Linux PXE server:
- Download Syslinux 3.86 and extract to a temporary location
- Copy the following three files directly to your WDS x64 boot directory, e.g., D:\RemoteInstall\Boot\x64\
- Make duplicate copies of these existing WDS files (should already be present in directory above); they need to have “zero” as the extension
- pxeboot.n12 -> pxeboot.0
- abortpxe.com -> abortpxe.0
- Create a directory in x64 named “pxelinux.cfg”
- Create a new text file: x64\pxelinux.cfg\default with the following as a guide:
DEFAULT menu.c32 MENU TITLE WDS PXE Server LABEL wds MENU DEFAULT MENU LABEL Windows Deployment Services KERNEL pxeboot.0 LABEL abort MENU LABEL Abort PXE Kernel abortpxe.0 LABEL linuxpxe MENU LABEL Linux PXE server... KERNEL pxechain.com APPEND 192.168.4.33::pxelinux.0 #IP address above is Linux PXE host
To activate, run these two commands from a command prompt on the WDS server:
wdsutil /set-server /bootprogram:boot\x64\pxelinux.0 /architecture:x64 wdsutil /set-server /N12bootprogram:boot\x64\pxelinux.0 /architecture:x64
Boot a machine from the network and you should get a PXELinux menu that offers a choice:
One other note: the Linux PXE server doesn’t actually need to be on the same network, it just needs to be reachable from the client.
What’s your preferred PXE deployment scenario?