[syslinux] pxechn.c32 not working when coming from iPXE 1.0.0

Vinícius Ferrão ferrao at if.ufrj.br
Wed Jul 5 20:47:11 PDT 2017


I’m running a PXE server with syslinux-6.03 and something not right happens when a iPXE clients loads pxechn.c32 to get in a WDS server: it fails.

I’ve discovered this when we started deploying oVirt in our infrastructure and QEMU calls SeaBIOS with iPXE for network booting. All other clients works just fine. Physical machines and VMware VM’s.

I don’t know if this is a known bug or not, searched through the web and the mailing list but I was unable to see anyone with a similar issue. To start debugging here are some of my settings:

Configured DHCP options in isc-dhcp-server 4.3.5-3:

option architecture-type   code 93  = unsigned integer 16;

option space pxelinux;
option pxelinux.magic      code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;

class "pxeclients" {
        # 1. Dont know exactly what this if-statement does
        # 2. Aparently the pxelinux.pathprefix is ignored (perhaps a Debian DHCP issue)
        #    So the ln -s workarround is needed to find the installers

        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";

        site-option-space "pxelinux";

        # Always send the PXELINUX options (specified in hexadecimal)
        if exists dhcp-parameter-request-list {
                option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);

        if option architecture-type = 00:00 {
                filename "pxelinux/lpxelinux.0";
                option pxelinux.configfile "pxelinux.cfg/bios";
        } elsif option architecture-type = 00:09 {
                filename "pxelinux/bootx64.efi";
                option pxelinux.configfile "pxelinux.cfg/efi64";
        } elsif option architecture-type = 00:07 {
                filename "pxelinux/bootx64.efi";
                option pxelinux.configfile "pxelinux.cfg/efi64";
        } elsif option architecture-type = 00:06 {
                filename "pxelinux/bootia32.efi";
                option pxelinux.configfile "pxelinux.cfg/efi32";
        } else {
                filename "pxelinux/bios/lpxelinux.0";
                option pxelinux.configfile "pxelinux.cfg/bios";

pxelinux.cfg Settings:

label 8
        menu label ^8. Windows Deployment Services
        kernel pxechn.c32
        append undercity.if.ufrj.br::\Boot\x86\wdsnbp.com -W

It’s pretty standard and was working flawlessly for years. 

The TFTP/PXE server runs on FreeBSD 11.0-RELEASE and the DHCP server is on Debian 9 Stretch.


More information about the Syslinux mailing list