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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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:
1
2
|
wdsutil /set–server /bootprogram:boot\x64\pxelinux.0 /architecture:x64
wdsutil /set–server /N12bootprogram:boot\x64\pxelinux.0 /architecture:x64
|
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.