Mount

無法進行 PXE 引導,“沒有文件系統可以掛載根”錯誤

  • July 6, 2016

我正在嘗試使用我創建的映像進行 PXE 引導,但在載入映像和核心後,我收到以下錯誤消息:

http://i.imgur.com/TYlbvKZ.jpg?1

主要的錯誤資訊是這樣的:

No filesystem could mount root, tried: ext3 ext2 iso9668
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0
Pid: 1, comm: swapper not tainted 2.6.34.1 #4

我已經嘗試在網上查找有關此的建議,但我發現要麼硬體不兼容,要麼使用另一個核心。我相信硬體是兼容的,因為我能夠毫無問題地從 SD 卡啟動相同的核心(不幸的是,我沒有創建的自定義核心)和作業系統(Scientific Linux 5),所以我認為這個網路引導也應該適用於相同的核心和系統。/sys為了使我的 SL5 映像用於網路啟動,我已經從 SD 卡中完全複製了所有文件(和中的文件除外/proc),但我仍然收到此錯誤消息。我也只嘗試複製必要的目錄,如/bin, /dev, /etc,/lib等。即使只有這些目錄,圖像也是 2.6GB 左右,我仍然收到此錯誤消息。

現在我覺得我有兩個選擇要解決:要麼圖像太大而無法安裝ram0(有大小限制嗎?),在這種情況下我應該修剪目錄的內容;或者係統根本無法辨識ram0,並且 initrd 程序存在問題。

以下是我的pxelinux.cfg/default文件的相關內容:

LABEL SL5
MENU LABEL SL5
KERNEL images/vmlinuz-2.6.34.1-32-v7805
APPEND initrd=images/SL5rootfs.gz root=/dev/ram0 ramdisk_size=3100000 rw ip=dhcp fastboot mem=3g

原來圖像實際上太大了。我有一個 3 GB 的圖像,只有 500 MB 的 RAM。將圖像大小調整為 400 MB 後,我能夠通過此錯誤螢幕,並最終啟動我的圖像。

如果您SL5rootfs.gz基於 SL ISO 中的 initrd 建構,那麼它的init腳本仍然包含用於從 CD/ISO 安裝根目錄的程式碼,這就是它失敗的原因。您必須進入從 /init 開始的引導腳本鏈,並現在根據網路檢索到的根分區(即 squshd fs 文件)修復根掛載。你可以通過 CIFS、HTTP、NFS 等來做到這一點。如果你想看到很多這方面的例子,你可以看看Serva為 PXE 引導許多 Linux 發行版所做的事情。(我與Serva開發有關)

您必須考慮的額外一點是是否SL5rootfs.gz真的有淨支持。如果沒有它,您可以很好地從 PXE 啟動它,但這是您唯一可以做的事情,因為您將無法通過網路檢索其他任何內容。

引用自:https://serverfault.com/questions/779087