WDS and Linux PXE Servers

WDS and Linux PXE Servers

Peaceful Coexistence: WDS and Linux PXE Servers

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\
    • core\pxelinux.0
    • modules\pxechain.com
    • com32\menu\menu.c32
  • 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:

To activate, run these two commands from a command prompt on the WDS server:

Action!

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.