使用 NFS 支持建構核心,但未獲取 /dev/nfs
我正在嘗試建構核心 3.13.9,使用 獲取
apt-get source
,並在乾淨的debootstrap
chroot 中建構(主機和 chroot 都是 Ubuntu Trusty 的安裝)。我的目標是通過 NFS 將無盤機器引導到控制台。我執行
make menuconfig
並啟用了 64 位核心,禁用了調試,並確保我正在執行 64 位建構。另外,我去文件系統->網路文件系統,並啟用以下:
- 網路文件系統
- NFS 客戶端支持
主機已
nfs-kernel-server
安裝,並為我想用作網路引導系統的根目錄的目錄設置了導出。PXE 啟動正常,核心和 initrd 已載入,但經過長時間的停頓後,由於缺少根文件系統,我被轉儲到了一個 busybox 提示符。
可能是什麼原因?(或者,是否需要更多資訊?)
**編輯:**我已經通過了
nfsroot
:LABEL linux KERNEL vmlinuz-3.13.9 APPEND root=/dev/nfs initrd=initrd.img-3.13.9 nfsroot=192.168.1.39:/nfsroot,rw ip=dhcp rw
正如核心文件所述,
/dev/nfs
它不是真正的設備,而只是提示核心將 NFS 用作rootfs
. 您還必須通過nfsroot
參數或正確設置的 DHCP 守護程序告訴核心在哪裡可以找到此根。要使後一個工作正常,您還必須配置核心以自動配置其網路介面,或者擁有一個initramfs
負責處理此問題的核心。此外,請確保將 NFS 支持內置到您的核心二進製文件中,而不是作為一個模組(或有一個
initramfs
,它負責這個)。網路驅動程序也是如此:您很可能希望將乙太網 NIC 的驅動程序內置到核心映像中,否則您必須從initramfs
.簡而言之,有幾種可能:
- 按照上面的連結告訴您:已
root=/dev/nfs
設置,提供正確的nfsroot
參數並通過參數告訴您的核心您的網路配置ip
(這將是確保它完全正常工作的最佳方法,即排除配置錯誤的 DHCP 伺服器)。- 擁有
CONFIG_IP_PNP
並CONFIG_IP_PNP_DHCP
啟用和設置一個 DHCP 守護程序,以告訴您的客戶端使用哪個 IP 地址以及在哪裡可以找到它的 NFS-root。- 建構一個
initramfs
執行正確配置和 NFS 安裝的程序。**編輯:**我認為,如果您按照編輯建議使用
initrd
/initramfs
,則必須在其中進行 NFS 掛載initrd
(相應地,您initrd
必須意識到它必須這樣做的事實)。通過核心自動掛載(作為 IP 自動配置,IIRC)僅在沒有initrd
.