PXE 启动:“挂载:在 /root/dev 上安装 /dev 失败:跨设备链接无效”

PXE 启动:“挂载:在 /root/dev 上安装 /dev 失败:跨设备链接无效”

我正在尝试建立一个网络启动系统集群,在最初成功之后,我遇到了一个奇怪的问题,我无法将其与我最近所做的事情联系起来。

我一直遵循这些指示:树莓派集群,跳过与我的情况无关的部分:

  • 步骤6:创建计算节点镜像
  • 步骤 9:设置并测试 chroot 环境
  • 第12步:升级并安装镜像中的软件包
  • 第14步:修改镜像中的initramfs,使其能够网络启动
  • 第16步:配置FTP服务器
  • 步骤 17:配置对计算节点的 SSH 访问
  • 第 20 步:设置 NFS 服务器

到目前为止,一切顺利 - 系统已启动(我已经出于其他目的设置了 DHCP 和 TFTP);共享出来的操作系统是Debian 12,我可以在控制台上以root身份登录。这是menuentryGRUB 中的:

menuentry 'Boot Debian 12' {
  set background_color=black
  linux /debian12/boot/vmlinuz-6.1.0-9-amd64 console=tty0 ip=dhcp root=/dev/nfs ro nfsroot=192.168.50.9:/image/debian12,vers=3,nolock panic=60 ipv6.disable=1 rootwait
  initrd /debian12/boot/initrd.img-6.1.0-9-amd64
}

启动映像中的内容fstab是空的,因为我还没有进行设置;到目前为止这还不是问题。

然而,今天,我在启动时遇到了这个问题(“在 /root/dev 上安装 /dev 失败:跨设备链接无效”):

在 /root/dev 上安装 /dev 失败:跨设备链接无效

我这辈子都无法想象这是怎么发生的;在我的笔记、记忆或想象中,我找不到任何关于 mount /devon的参考/root/dev,甚至在解压 ramdiskfs ( /image/debian12/boot/initrd.img-6.1.0-9-amd64) 之后,我也找不到任何涉及此类内容的内容。所以,最大的问题是“如何”?

编辑1

深入挖掘后,我发现initinitrd 中有一个脚本:

unpack the initrd:

root@vogon:~/test# unmkinitramfs /image/debian12/boot/initrd.img-6.1.0-9-amd64 .
root@vogon:~/test# ll 
total 8
drwxr-xr-x 3 root root 4096 Jun 26 12:28 early/
drwxr-xr-x 7 root root 4096 Jun 26 12:28 main/
root@vogon:~/test# ll main
total 28
lrwxrwxrwx 1 root root    7 Jun 26 12:28 bin -> usr/bin
drwxr-xr-x 3 root root 4096 Jun 26 12:28 conf/
drwxr-xr-x 6 root root 4096 Jun 26 12:28 etc/
-rwxr-xr-x 1 root root 6556 Apr 10  2022 init
lrwxrwxrwx 1 root root    7 Jun 26 12:28 lib -> usr/lib
lrwxrwxrwx 1 root root    9 Jun 26 12:28 lib32 -> usr/lib32
lrwxrwxrwx 1 root root    9 Jun 26 12:28 lib64 -> usr/lib64
lrwxrwxrwx 1 root root   10 Jun 26 12:28 libx32 -> usr/libx32
drwxr-xr-x 2 root root 4096 Jun 22 11:28 run/
lrwxrwxrwx 1 root root    8 Jun 26 12:28 sbin -> usr/sbin
drwxr-xr-x 5 root root 4096 Jun 26 12:28 scripts/
drwxr-xr-x 8 root root 4096 Jun 26 12:28 usr/

这似乎是尝试挂载多个系统目录的地方/root;但我还没有找到如何解决这个问题。

答案1

通常,当 initrd 缺少(真实)根文件系统的文件系统驱动程序或该文件系统下面的某些内容时,就会发生此错误:根映像[应该]从其中安装的 dm/loop 设备等。鉴于您在那里设置了一个集群,我猜您正在尝试远程挂载根目录,这可能会因 initrd 中缺少 net fs(例如 nfs)驱动程序而失败。 (Initramfs shell 通常缺少lsmod,但您也可以检查加载了哪些内核模块[以及驱动程序] cat /proc/modules。)此外,grub(或您正在使用的任何引导加载程序)中的 UUID [或对于网络文件系统,网络路径]错误配置可能会导致相同的错误。至于检查网络路径,请尝试从 initramfs 提示符手动安装它们。

相关内容