“无法在网络上找到实时文件系统”从 CentOS PXE 启动 Ubuntu

“无法在网络上找到实时文件系统”从 CentOS PXE 启动 Ubuntu

我始终使用 UEFI 选项通过网络 DHCP/TFTP 从 CentOS 7 PXE 服务器将裸机服务器镜像到 CentOS 7 和 8。我也希望构建 Ubuntu 20.04 服务器。

我按照文档操作,从 Ubuntu ISO 的 casper 目录中提取了 vmlinuz 和 initrd,然后将它们放在基本 tftpboot 目录中。事情进展顺利,ISO 下载到客户端,进入 BusyBox 并启动 initramfs 后,它完成加载 ISO,但随后停止在“无法在网络上找到实时文件系统”。问题是,我能够在客户端上导航并找到 ISO,我什至能够安装它并看到所有内容都在那里。

我使用过不同的 ISO(例如 Ubuntu 桌面)。我已经验证了 ISO 的 sha 和。

这是我正在使用的 grub.cfg,将所有内容删除以隔离问题。

timeout=30
timeout_style=menu

menuentry 'Ubuntu 20.04.2' {
  linuxefi /vmlinuz ip=dhcp url=http://10.10.10.1/ubuntu-20.04.2-live-server-amd64.iso
  initrdefi /initrd
}

menuentry 'CentOS 7.8' {
  linuxefi /centos/images/pxeboot/vmlinuz ip=dhcp inst.repo=http://10.10.10.1:/centos
  initrdefi /centos/images/pxeboot/initrd.img
}

CentOS 安装工作正常(/centos 是 CentOS ISO 转储的路径)。

我有什么遗漏的吗?

答案1

不幸的是,这是一个包罗万象的失败,有多种可能的原因。您进入的 busybox shell 将允许您查看临时 ram 文件系统中的 casper.log 文件。 (添加debug=到 APPEND 行应该打开额外的调试信息)。这可能会说明这个问题。

此外,tftp 和 http 服务器上的日志文件也会让您知道它请求所需的各个部分的情况。

一种可能性(以及我的情况中的问题)是您正在提供的 vmlinuz 和 initrd 文件应该与您正在加载的 .iso 映像中的文件相同。 (我将 .iso 更新为新的次要版本,然后突然开始遇到此问题,因为我使用的是先前版本中的内核/initrd)

mount -o loop,ro ubuntu-20.04.2-live-server-amd64.iso /mnt
cp /mnt/casper/initrd /mnt/casper/vmlinuz [destination]
umount /mnt

答案2

我已经让它在我的默认配置中使用以下参数:

LABEL Ubuntu 20 LTS
    MENU LABEL Install Ubuntu 20 LTS
    KERNEL ubuntu20/casper/vmlinuz # On PXE server, relative to TFTP Root
    INITRD ubuntu20/casper/initrd
    IPAPPEND 1
    APPEND autoinstall ip=dhcp interface=enp5s0 ds=nocloud-net;s=http://<mywebserver>/ubuntu2004/autoinstall/ucshadoop06/ url=http://<mywebserver>/ubuntu-20/liveserver-iso/ubuntu-20.04.1-live-server-amd64.iso

无论有没有 ds 参数,它都可以工作。我当前的挑战是弄清楚为什么 ds 参数不执行任何操作。如果您有任何进一步的信息,请告诉我。

答案3

.disk正如此错误中提到的,可能是缺少文件:https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1877618

复制 PXE 安装文件时,请确保包含隐藏文件:https://superuser.com/questions/61611/how-to-copy-with-cp-to-include-hidden-files-and-hidden-directories-and-their-con

顺便说一句,这是我发现的关于设置 PXE 安装的最好的文章——我修改了 Ubuntu 20.04 的说明,并且必须确保我复制了.disk(文章中未提及):https://linuxhint.com/pxe_boot_ubuntu_server

答案4

我写有关如何为 Ubuntu 构建 LTSP 的教程(这是在 16.04 中出现的,但应该仍然适用于新版本)。

客户端构建可能失败,这就是为什么您的客户端在从 PXE 选项启动时无法看到这一点,即使 ISO 明显存在。

相关内容