[syslinux] Problem with cascading configurations

Malte Forkel malte.forkel at berlin.de
Tue Sep 3 03:33:17 PDT 2019


Hello,

I am trying to setup a PXE server for two Debian releases (stretch and
buster) using their respective network boot images (netboot.tar.gz),
which I extracted into subdirectories of the TFTP server's root directory:

    ├── debian
    │   ├── buster
    │   │   ├── debian-installer
    │   │   ├── ldlinux.c32 ->
debian-installer/i386/boot-screens/ldlinux.c32
    │   │   ├── pxelinux.0 -> debian-installer/i386/pxelinux.0
    │   │   ├── pxelinux.cfg -> debian-installer/i386/pxelinux.cfg
    │   │   └── version.info
    │   └── stretch
    │       ├── debian-installer
    │       ├── ldlinux.c32 ->
debian-installer/i386/boot-screens/ldlinux.c32
    │       ├── pxelinux.0 -> debian-installer/i386/pxelinux.0
    │       ├── pxelinux.cfg -> debian-installer/i386/pxelinux.cfg
    │       └── version.info
    ├── pxelinux.0
    ├── pxelinux.cfg
    │   └── default
    ├── syslinux
    │   ├── ldlinux.c32
    │   ├── libutil.c32
    │   └── menu.c32

The directory syslinux contains files copied from the host's package
syslinux-common. The host OS is Raspbian stretch.

pxelinux.cfg/default looks like:

    MENU TITLE PXE Remote Boot
    DEFAULT syslinux/menu.c32
    PROMPT 0

    LABEL Debian_9_i386
        MENU LABEL Debian 9 Stretch Network Installer (i386)
        CONFIG debian/stretch/debian-installer/i386/pxelinux.cfg/default
debian/stretch/

    LABEL Debian_10_i386
        MENU LABEL Debian 10 Buster Network Installer (i386)
        CONFIG debian/buster/debian-installer/i386/pxelinux.cfg/default
debian/buster/

Booting Debian stretch on a PXE client works fine. But trying to boot
Debian buster results in an error:

    Undef symbol FAIL: init_fpu
    Failed to load libcom32.c32
    Failed to load COM32 file
debian-installer/i386/boot-screens/vesamenu.c32

Stretch and buster use incompatible versions of syslinux. And PXE is
requesting ldlinux.c32 before switching to the working directory
debian/buster specified by CONFIG. So instead of
debian/buster/ldlinux.c32, syslinux/ldlinux.c32 is used. Here is and
excerpt from the TFTP server's log:

    in.tftpd[12160]: RRQ from 10.0.1.106 filename /ldlinux.c32
    in.tftpd[12161]: RRQ from 10.0.1.106 filename //syslinux/ldlinux.c32
    in.tftpd[12162]: RRQ from 10.0.1.106 filename
/debian/buster/debian-installer/i386/pxelinux.cfg/default
    in.tftpd[12163]: RRQ from 10.0.1.106 filename
/debian/buster/debian-installer/i386/boot-screens/menu.cfg
    ...
    in.tftpd[12184]: RRQ from 10.0.1.106 filename
/debian/buster/debian-installer/i386/boot-screens/vesamenu.c32
    in.tftpd[12185]: RRQ from 10.0.1.106 filename
/debian/buster/libcom32.c32
    in.tftpd[12186]: RRQ from 10.0.1.106 filename
/debian/buster/debian-installer/i386/boot-screens/libcom32.c32

How do I have to configure PXE to make it use the "right" version of
ldlinux.c32?

Thanks,
Malte



More information about the Syslinux mailing list