使用 NFS 进行 PXE 引导:/sbin/init:没有这样的文件或目录

使用 NFS 进行 PXE 引导:/sbin/init:没有这样的文件或目录

我正在尝试使用 ubuntu 客户端设置 PXE 启动。

  • 在我的番茄路由器上创建了 dhcp-boot
  • 在我的 FreeNas 盒子上添加了一个 tftp 守护进程
  • 在我的 FreeNas 盒子上添加了 NFS 安装
  • 将 Ubuntu 11.10 卸载到 NFS 挂载
  • 我已经从 debootstrap 映像生成了 vmlinuz 和 initrd,并将它们复制到 tftp 根目录。
  • 在 tftp 根目录中创建了 pxelinux.cfg/default 文件

pxelinux.cfg/default 包含:

DEFAULT ubuntu-11.10

LABEL ubuntu-11.10
KERNEL vmlinuz-3.0.0-16-generic
APPEND root=/dev/nfs initrd=initrd.img-3.0.0-16-generic netboot=nfs nfsroot=192.168.1.160:/mnt/media/thinclient/base,nolock,ro ip=dhcp init=/linuxrc
ipappend 2

在启动我的节点/客户端时,它会加载 vmlinux 和 initrd,但在尝试加载 /sbin/init 时会出现“恐慌”: 内核恐慌

我用 tcpdump 查看进程是否正在访问我的 nfs 服务器,并且看到数据传递。另外,如果我从 nfs 服务器上的映像中删除 /proc 或 /dev,节点会抱怨它缺少 /dev 和/或 /proc 目录。

我也尝试过传递 init=/bin/bash 但这引发了同样的错误。

为什么我的节点会抛出run-init: /sbin/init: no such file or directory错误?

答案1

这是我自己的错(当然)。我没有正确地将 /dev 节点复制到 nfs 服务器。我认为这就是问题所在,并手动创建了 /dev 节点,但这也无法正常工作。

我最终做的是压缩本地 debootstrap 映像,将其 scp 到 FreeBSD NFS 服务器并在本地解压缩。

然后它就完美地工作了。

相关内容