07 October 2015

PXE booting from Primary PXE server to Secondary PXE server

PXE Chaining.
PXE chainloading.
PXE cross booting.

I don't really know the correct term but I know what I wanted to do. Surprisingly, through my efforts, I found it very difficult to get a straightforward answer from the interwebs, but after doing this-and-that etc. I've drawn up my own notes; perhaps they may be helpful to someone else.

Setting

We run an old Windows 2003 (ahem, not my choice) server with DHCPdNT service which seems to emulate the Linux DHCP configuration (we have a DHCPd.conf file, /tftpboot/ folder, etc.).

I shall refer to this as a hybrid setup.

We run standard PXE boot menus referenced inside our DHCPd.conf file for various subnets; inside each boot menu are more options, with one being "boot diskless Linux". When this is selected, the pxelinux.0 image file is invoked, and off we go inside /tftpboot/pxelinux.cfg/ and look for a matching config file (you know the drill, start with the MAC address, work your way down until eventually you get to default if nothing else is available).

Challenge

I now wanted to add Clonezilla SE to the PXE menu option but Clonezilla SE insists on using DRBL for its functionality. This is how it works, in a nutshell (or outside of a nutshell too):
  1. Boot up Live DRBL CD (or from local install)
  2. Initiate DRBL / Clonezilla Server
  3. It will likely create an IP alias for the local NIC if you only have one NIC
  4. Initiates DHPC / PXE
  5. Waits for clients
I wanted to have my primary PXE server have a menu item that links to the secondary PXE server; if I ran the secondary PXE server on the same network as the primary DHCP we could have conflicting DHCP issues, and some of the clients would pick up the secondary PXE menu when they didn't ask for it. I avoided this by running the secondary server on a totally separate subnet (with its own potential problems but we will ignore them for now :)).

How do I get a solution along these lines:

PXE Menu 1
option 1: boot local
option 2: memtest
option 3: diskless linux
option 4: load PXE menu 2

Solution

  1. Download pxechain.com from  syslinux project archive
    1. copied pxechain.com to c:/tftpboot/ on Primary PXE / DHCP server.
    2. within C:\TFTPBOOT\pxelinux.cfg\
      1. edit default (for all PCs, or if you want to be safe and troubleshoot / test with a single PC, create new blank file 01-00-0c-29-ca-1a-81 [YMMV])
      2. Add the following text to configure the menu item:
default Clonezilla-live
menu title Modified Menu
timeout 300

label Clonezilla-live
 MENU LABEL Clonezilla Live (Ramdisk)
 KERNEL pxechain.com
 APPEND [[IP Address of 2ndary server]]::pxelinux.0
  1. This will run pxechain.com which prompts for a server and filename, which are fed above (using the Clonezilla DRBL default options for testing purposes)
    1. Only the defined MAC address machine will load this PXE configuration

That's about it :)