Finally got a Linux PXE boot server to chain to a WDS boot server working!
Here’s what you need:
pxechain.com from SYSLINUX 4.04+, other version have a bug which will crash when you try pxechain.
on your DHCP server in dhcpd.conf:
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
class "PXE" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server LINUX_PXE_TFTP_IP;
filename "pxelinux.0";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
option PXE.mtftp-ip 0.0.0.0;
}
on your TFTP server in pxelinux.cfg/default
LABEL WDSBoot
MENU LABEL ^Boot to WDS server
kernel pxechain.com
append WINDOWS_WDS_SERVER::\Boot\wdsnbp.com
Obviously, replace LINUX_PXE_TFTP_IP and WINDOWS_WDS_SERVER with the appropriate IP addresses of your servers. Additional nice thing is that in pxelinux.cfg, you can use the DNS name rather than the IP and pxelinux will resolve it for you before chaining the boot process.
If you don’t have those options in dhcpd.conf, wdsnbp.com will not get redirected properly to the Windows WDS server and try to get WDS boot info from the Linux server, which obviously won’t work.
Hope that helps someone!
