1

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?

maf
  • 111
  • 2
  • i thin your pxeconfig has set a wrong path as i remember my last multiboot pxe server – djdomi Aug 26 '19 at 20:46
  • @djdomi could you be a little bit more specific, please? – maf Aug 27 '19 at 05:45
  • as i remeber you csn set in the path for each subdir an extra config and there should be a path set whst you need, howto? read the manual please – djdomi Aug 28 '19 at 04:58

1 Answers1

0

With the kind help from the people on the Syslinux mailing list, I found a solution. My sample configuration now uses pxechn.c32 and looks like this:

LABEL Debian_9_i386
    MENU LABEL Debian 9 Stretch Network Installer (i386)
    KERNEL pxechn.c32 debian/stretch/pxelinux.0

LABEL Debian_10_i386
    MENU LABEL Debian 10 Buster Network Installer (i386)
    KERNEL pxechn.c32 debian/buster/pxelinux.0

This requires pxechn.c32 and libcom32.c32.

maf
  • 111
  • 2