我正在尝试使用 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 服务器并在本地解压缩。
然后它就完美地工作了。