如何设置级联 PXE 服务器?

如何设置级联 PXE 服务器?

我正在尝试使用它们各自的网络启动映像 (netboot.tar.gz) 为两个 Debian 版本 (stretch 和 buster) 设置 PXE 服务器,我将其提取到 TFTP 服务器根目录的子目录中:

├── 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

目录 syslinux 包含从主机的 syslinux-common 包复制的文件。主机操作系统是 Raspbian stretch。

pxelinux.cfg/default 看起来像:

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/

在 PXE 客户端上启动 Debian stretch 一切正常。但尝试启动 Debian buster 时出现错误:

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

Stretch 和 buster 使用不兼容的 syslinux 版本。而且 PXE 在切换到 CONFIG 指定的工作目录 debian/buster 之前请求 ldlinux.c32。因此,使用的是 syslinux/ldlinux.c32,而不是 debian/buster/ldlinux.c32。以下是 TFTP 服务器日志的摘录:

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

我该如何配置 PXE 才能使其使用“正确”版本的 ldlinux.c32?

答案1

随着来自 Syslinux 邮件列表的帮助,我找到了一个解决方案。我的示例配置现在使用 pxechn.c32,如下所示:

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

这需要 pxechn.c32 和 libcom32.c32。

相关内容