Network Booting my WinPe image with pxelinux has been an illusive goal of mine. I got it working :-).
Get iPXE
I downloaded iPXE into my home folder:
git clone git://git.ipxe.org/ipxe.git
cd ipxe/src
make
cp bin/undionly.kpxe /tftproot/
PXE Chainloading
I have configured my network to chainload iPXE using the “undionly.kpxe” image. I configured my dhcp server (dd-wrt) to point to my tftp server which runs on my NAS. I placed “undionly.kpxe” in the tftp root folder.
next-server X.X.X.X;
filename "undionly.kpxe";
I used VirtualBox to test by booting from the network, undionly.kpxe is then copied down from the tftp server. Success!
Things are loopy
As per the docs, When the chainloaded iPXE starts up, it will issue a fresh DHCP request and boot whatever the DHCP server hands out. The DHCP server is currently set up to hand out the iPXE image, which means that you will be stuck in an infinite loop: PXE will load iPXE which will load iPXE which will load iPXE which will load iPXE
I am ok with using the EMBED method to call the script which brings up WinPE. At some point I intend to configure a menu.
iPXE boots from many protocols including HTTP. HTTP boot is amazingly fast! I configure my web folder to \\server\boot\ and placed all the required files in that location. We are using wimboot to boot winpe so download and place in your web root.
Copy your Winpe files to the webroot folder and save the code below in a script called winpe.ipxe and save in your webroot folder.
#!ipxe kernel wimboot initrd bootmgr bootmgr initrd Boot/bcd BCD initrd boot.sdi boot.sdi initrd boot.wim boot.wim boot
Time to Test
I booted up iPxe, CTRL B for cli and entered the code below. It was awesome!
dhcp chain http://server/boot/winpe.ipxe