Ubuntu
使用 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 時會“恐慌”:
如果程序正在訪問我的 nfs 伺服器並且我看到數據傳遞,我查看了 tcpdump。此外,如果我從我的 nfs 伺服器上的映像中刪除 /proc 或 /dev,節點會抱怨它缺少 /dev 和/或 /proc 目錄。
我也嘗試過傳遞 init=/bin/bash 但這引發了同樣的錯誤。
為什麼我的節點會拋出
run-init: /sbin/init: no such file or directory
錯誤?
這是我自己的錯(當然)。我沒有正確地將 /dev 節點複製到 nfs 伺服器。我認為這是問題所在並手動創建了 /dev 節點,但這也無法正常工作。
我最終做的是對本地 debootstrap 映像進行 tar 處理,將其 scp’ing 到 FreeBSD NFS 伺服器並在本地解壓縮它。
然後它完美地工作了。