[syslinux] PXE Booting EFI

Patrick Masotta
Sun, 11 Jan 2015 15:32:40 -0000

>First, I was looking for the actual values.?
>For a VM with (among other values):

> config.version = "8"
> virtualHW.version = "10"
> ethernet0.virtualDev = "e1000"
> guestOS = "rhel6-64"
> firmware = "efi"

> I see:

> option-93 = 0x07
> option-60 ="PXEClient:Arch:00007:UNDI:003016"

OK I take binaries (w/o recompiling) from
https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.zip\efi32\efi\syslinux.efi

config.version = "8"
virtualHW.version = "9"
ethernet0.virtualDev = "e1000e"
guestOS = "windows8"
firmware = "efi"

option-93 = Client System Architecture: EFI IA32 (6)
option-60 =Vendor class identifier: "PXEClient:Arch:00006:UNDI:003016"

I've performed a deeper analysis and this is what's going on.

The client get's its IP from VMware DHCP server, the ACK includes
NextServer=192.168.62.254 (the DHCP Server IP)
The client gets PXE parameters from a proxyDHCP NextServer=192.168.62.1 (the PXE
Server IP)

While the NBP syslinux.efi is correctly retrieved considering the PXE parameters
given by the proxyDHCP (192.168.62.1)
the TFTP request of the file ldlinux.e32 is performed with the data included in
the DHCP answer (192.168.62.254) instead.
That's why the PXE server never receives the ldlinux.e32 TFTP request.
Also I see  ldlinux.e32 is requested plain, w/o any path component.

I think this is a bug in syslinux.efi retrieving its components w/o considering
proxyDHCP scenarios.

If using the same DHP+proxyDHCP scenario I boot MS bootmgfw.efi the MS boot
manager correctly detects
who is the real PXE server and conducts its further TFTP requests correctly.



> No, I'm stating that binaries built with
> gcc-4.6 will likely fail and
> that gcc-4.7+
> is likely needed.? One example of a system is a build VM
> I have with Debian-7 that I use to build some
> of my test binaries.

What OS is used by syslinux maintainers???

Best,
Patrick