内核恐慌 – 不同步:VFS:无法在未知块(0,0)上挂载根fs

在尝试从10.10升级到11.04时,似乎一切顺利,直到重启。 出现此错误消息:

Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) 

我们如何解决这个问题?

您缺少该内核的initramfs。 从grub菜单中选择另一个内核,或运行update-initramfs -u -k version以生成update-initramfs -u -k version的initrd然后update-grub

从livecd,open aa终端开始

 sudo fdisk -l sudo mount /dev/sdax /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /dev/pts /mnt/dev/pts sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt 

现在你可以update-initramfs和update-grub。

 update-initramfs -u -k 2.6.38-8-generic (or your version) 

如果你不知道你的版本。 使用:

 dpkg --list | grep linux-image 

只需更新Grub。

 update-grub2 

重新启动系统。

在我的情况下,问题是/boot是100%容量,所以最后2个内核更新没有成功完成,因此在重新启动时GRUB2选择了最新的内核,它失败了。

我通过引导安装到最旧的内核并使用aptitude删除一些未使用的内核来解决了这个问题。 通过使用aptitude ,在卸载发生后, dpkg会自动尝试配置损坏的软件包,这次成功了。

如果这发生在中止内核更新后(例如,在aptitude safe-upgrade系统崩溃),

  1. 用旧内核启动和
  2. 运行dpkg --configure -a

这将完成升级,包括配置启动设置,如psusi所述 。

除了Tomeu的指示,在我需要chroot之前:

sudo mount --bind /dev /mnt/dev

另外,在chroot之后:

cp -r /usr/lib/i386-linux-gnu/pango /usr/lib/

( 从这里得到这个。 )

您也可以在救援模式下启动服务器,并仅重新安装grub

http://info.w3calculator.com/free-code/linux/recover-from-corrupted-boot-image/

由于我的/ boot分区已满,我遇到了这个问题所以我的内核更新失败了。 我设法通过从GRUB菜单中的旧内核启动来解决这个问题。

当我设法启动时,我开始清除旧内核,但我设法得到一些依赖性问题,所以首先我必须卸载linux-server包

 apt-get remove linux-server apt-get update apt-get -f install apt-get upgrade 

然后我重新启动,一切正常!

内核引导消息告诉您可以使用哪些磁盘

例如,如果在我的测试Linux 4.17虚拟机设置中,我用root=/dev/vdb替换正确的root=/dev/vda ,最后一条消息是:

 ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)- 

但是 ,上面几行,它显示了类型的消息:

 VFS: Cannot open root device "vdb" or unknown-block(0,0): error -6 Please append a correct "root=" boot option; here are the available partitions: fe00 524288 vda driver: virtio_blk 

这基本上告诉我没有找到vdb ,但是由于virtio_blk驱动程序( CONFIG_VIRTIO_BLK=y ),可以读取/dev/vda