24.04 Server LTS 的 pxeboot 安装失败

24.04 Server LTS 的 pxeboot 安装失败

我正在尝试为 24.04 Server LTS 设置 pxeboot 安装程序。机器可以正常找到我们的 PXE 和 TFTP,并加载内核和 initrd。但是当它开始安装时,它无法识别它已收到 DHCP 地址。我可以跟踪我们 DHCP 服务器上的日志并看到它获取了一个地址。在机器的控制台上,我可以看到它命名了相同的 IP 地址,但随后显示“没有这样的设备”,然后显示“没有要配置的设备”,尽管每一轮都是从分配给它的 IP 开始的。

我尝试过将 pxeboot 设置更改为使用静态 IP,但仍然会收到“无设备”之类的错误。它尝试了多次,间隔越来越长,最终失败了。

看来 BIOS 可以找到用于初始启动的 NIC,但通过 TFTP 加载的内核却找不到。不过,我仍然可以在 DHCP 服务器上的日志中看到每次尝试。

该机器是运行在 xen 虚拟机管理程序下的虚拟机。这似乎不应该成为问题。它确实可以很好地与 Ubuntu 22.04 LTS 配合使用。在 xen 中,默认的“NIC”是 Realtek,或者您也可以选择模拟 Intel e1000。我尝试了这两种方法,但没有任何变化。更新:我也在裸机(Dell R740)上尝试过这种方法,但错误略有不同(Dell 运行的是 UEFI,而虚拟机使用旧版 BIOS),但仍然没有效果。

一旦进入 busybox/initramfs 提示符,网络接口就未配置。我可以启用它,它可以很好地获取 DHCP 设置,包括 IP、GW、广播、DNS、TFTP 服务器。但是 DNS 不起作用:/etc/resolv.conf 为空。我可以手动向其中添加名称服务器,然后网络就可以正常工作了。以下是整个情况的屏幕截图:

在此处输入图片描述

从 pxelinux.cfg.default 调用安装有什么变化吗?这是我调用的内容:

LABEL Ubuntu24.04 LTS Auto Install
  MENU LABEL Ubuntu 24.04 LTS Unattended Base Build (SCHARP)
  KERNEL ubuntu24.04/vmlinuz
  APPEND autoinstall initrd=ubuntu24.04/initrd root=/dev/ram0 ramdisk_size=16384 hostname=ubuntu-24 ip=dhcp url=http://depot.pc.scharp.org/ISO/ubuntu-24.04-live-server-amd64.iso ds=nocloud-et;s=http://depot.pc.scharp.org/auto_os/u24/

更新 4/29:我发现我使用的是 pxelinux.0 文件的非常旧版本。将 pxelinux 安装到我的 tfptd 服务器并复制当前版本的 pxelinux.0 和相关文件。没有变化。

还尝试使用静态寻址启动安装,在“APPEND”行中指定网络设备和设置。尽管之前看到的是相同的设备名称,但错误输出中仍然显示“没有这样的设备”。

答案1

这是 pxeboot 菜单文件 pxelinux.cfg/default 和 grub.cfg 的问题。对于这两个文件,内核参数行需要指定一个条目,而我发现除了说应该将其设置为 /dev/null 之外,几乎没有提到这一点。总的来说,这些参数的记录似乎很模糊,在某些情况下甚至不正确。

无论如何,这就是可行的方法。我将发布完整的条目,因为它们仅包含私有 IP 空间和名称服务器区域。

对于 pxelinux.cfg/default (旧版 BIOS):

LABEL Ubuntu24.04LTS Auto Install
    MENU LABEL Ubuntu 24.04 LTS Unattended Base Build (SCHARP)
    KERNEL ubuntu24.04/vmlinuz
    APPEND initrd=ubuntu24.04/initrd ip=dhcp fsck.mode=skip url=http://depot.pc.scharp.org/ISO/ubuntu-24.04-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://depot.pc.scharp.org/auto_os/u24/ cloud-config-url=http://depot.pc.scharp.org/auto_os/u24/user-data

对于 grub.cfg (UEFI):

menuentry "Ubuntu 24.04 LTS Auto Install" {
    echo "loading kernel..."
    linux ubuntu24.04/vmlinuz fsck.mode=skip autoinstall ip=dhcp url=http://depot.pc.scharp.org/ISO/ubuntu-24.04-live-server-amd64.iso ds=nocloud-net s=http://depot.pc.scharp.org/auto_os/u24/ cloud-config-url=http://depot.pc.scharp.org/auto_os/u24/user-data
    echo "loading RAM disk..."
    initrd ubuntu24.04/initrd
}

一般来说,除非需要更改默认值,否则我不喜欢更改默认值。例如,我继承了本主题前面列出的第一个菜单项,这些菜单项对启动磁盘位置、大小和主机名进行了硬编码。此解决方案很可能对不需要指定的内容进行了硬编码。但我会接受它。

相关内容