Linux

核心恐慌 - 不同步:VFS:新核心編譯後無法掛載根 fs

  • January 23, 2015

所以我已經有一段時間了,幾天來一直在尋找答案,並認為是時候尋求幫助了。我在 VMWare Fusion 中執行 Ubuntu 10.10,並下載了 3.2 核心的副本並使用所有預設設置建構它。當我在呼叫 make install 後嘗試啟動新核心時,我收到以下消息:

[    1.581916] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    1.582260] Pid: 1, comm: swapper/0 Not tainted 3.2.4 #1
[    1.582444] Call Trace:
[    1.582552]  [<ffffffff815e7447>] panic+0x91/0x1a7
[    1.582666]  [<ffffffff815e75c5>] ? printk+0x68/0x6b
[    1.582799]  [<ffffffff81ad2152>] mount_block_root+0x1ea/0x29e
[    1.582929]  [<ffffffff81ad225c>] mount_root+0x56/0x5a
[    1.583047]  [<ffffffff81ad23d0>] prepare_namespace+0x170/0x1a9
[    1.583178]  [<ffffffff81ad16f7>] kernel_init+0x144/0x153
[    1.583304]  [<ffffffff815f45f4>] kernel_thread_helper+0x4/0x10
[    1.583436]  [<ffffffff81ad15b3>] ? parse_early_options+0x20/0x20
[    1.583570]  [<ffffffff815f45f0>] ? gs_change+0x13/0x13

它曾經出現在每次重新啟動時。我發現如果我更改了 VM 的硬碟驅動器類型,我至少可以啟動 GRUB,但是如果我嘗試載入新編譯的核心,就會出現上面的消息。舊核心和以前一樣工作。我已經檢查並編譯支持 ext4,這是我的 root 正在執行的 fs。我還嘗試通過呼叫“sudo update-initramfs -c -k 3.2.4”來生成一個 initrd 文件,但無濟於事。

我認為編譯非常標準:

make menuconfig
make
make modules_install
make install
update-grub
reboot

是一般的步驟。在選項方面,我基本上都預設了。如果它是相關的,我的 fstab 看起來像這樣:

proc            /proc           proc    nodev,noexec,nosuid 0       0
#UUID=c75eddd9-f4fa-49be-927b-8c2da7074135 /               ext4    errors=remount-ro 0       1                                                                                                                                                                                                                                                  
/dev/sda1                                  /               ext4    defaults          0       1
#UUID=5bc6915e-fdfa-479a-885f-ea03cb14f9cd none            swap    sw              0       0                                                                                                                                                                                                                                                    
/dev/sda5                                  none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

我用 UUID 和 /dev/sd* 表示法都試過了。任何幫助或建議將不勝感激,因為它變得非常令人沮喪。

謝謝你。

您忘記建構與核心一起使用的 initrd。執行update-initramfs -c -k kernelversion然後update-grub找到它並將其添加到 grub 菜單中。

您是否內置了掛載根分區所需的所有驅動程序?我的意思是,I/O 控制器驅動程序、文件系統驅動程序等等?

該錯誤意味著什麼,核心無法掛載根文件系統。

我不記得究竟應該unknown block是什麼,但我想這意味著它缺少 I/O 控制器驅動程序。

請注意,驅動程序必須內置到核心中,模組將無法工作(因為您需要掛載文件系統才能訪問模組)。

引用自:https://unix.stackexchange.com/questions/31112