内核恐慌-不同步:VFS:无法在未知块(0,0)上安装根fs


97

尝试从10.10升级到11.04之前,一切似乎都很顺利,直到重新启动为止。出现此错误消息:

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

我们该如何解决?


1
您的麻烦可能与您的主系统无关,而与安装介质(USB记忆棒)无关
Frank Nocke

由于没有足够的代表,我无法发布答案,但是当我遇到此问题时,我通过启动到活动USB记忆棒,安装主分区和EFI分区启用网络以及运行sudo apt-get install linux-image-generic升级到最新版本来解决了该问题核心。
欧文

Answers:


82

您缺少该内核的initramfs。从Ubuntu的Advanced options高级选项)下的GRUB菜单中选择另一个内核,然后运行sudo update-initramfs -u -k version以生成initrd version(替换version为内核版本字符串,例如4.15.0-36-genericsudo update-grub


2
如果在选择该操作系统存在的唯一内核选项时(在多重引导情况下)显示内核恐慌怎么办,如何启动update-initramfs?
knocte 2014年

3
@Dew,评论不佳...
psusi 2014年

2
@knocte,请参见Tomeu Roig的答案。
psusi 2014年

1
看起来答案很差,但这是事实!
user3215

2
我无法输入Ubuntu SystemRecovery Mode,如何执行该命令以测试其是否有效?
卡斯珀

53

从livecd开始,打开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和更新grub而不会出错。

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

如果您不知道您的版本。采用:

dpkg --list | grep linux-image

然后更新Grub。

update-grub2

重新启动系统。


1
我已经添加sudo mount --bind /dev/pts /mnt/dev/ptssudo mount --bind /sys /mnt/sys在编辑中;没有这个,update-grub2抱怨。
Hbf 2012年

4
我怎么能找到确切的 version呢?
knocte 2014年

1
如果您使用的是EFI,则除了第一个/ dev / sdax之外,没有任何挂载点。
Paul Gregoire 2014年

@knocte尝试ls /mnt/boot寻找最新的内核版本。或者,如果你想正确地做到这一点,阅读menuentry 'Ubuntu'距离/mnt/boot/grub/grub.cfg
西罗桑蒂利新疆改造中心法轮功六四事件

在Ubuntu 14.04上工作!在initrd从失踪/boot。问题是:文件怎么可能只是消失了?我什么也没做,似乎很危险。
Ciro Santilli新疆改造中心法轮功六四事件

22

在我的情况下,问题是/boot容量为100%,因此最后2个内核更新未成功完成,因此在重新引导时GRUB2选择了最新的内核时,它失败了。

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


3
这是最接近我的解决方案的方法。只需运行dpkg --configure -a就足以触发update-initramfs挂钩,并修复损坏的内核。
对称

您的意思是您有一个单独的/boot分区吗?
Ciro Santilli新疆改造中心法轮功六四事件2015年

1
这是我到达之前设置的服务器,并在其自己的分区上配置了/ boot并进行了无人值守的升级
Sheepeatingtaz 2015年

3
您可以使用sudo apt-get autoremove删除旧内核,以防上的空间不足/boot
Florian Brucker

我启动了一个较旧的内核,执行了sudo apt-get autoremove,再次重新启动(较旧的内核),然后执行了sudo apt-get dist-upgrade,这可以正常工作。这是在我拥有的小型测试机上。虽然是同一问题,但100%/boot
jmlumpkin

18

如果在内核更新异常终止后发生这种情况(例如,时系统崩溃aptitude safe-upgrade),

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

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


1

内核启动消息告诉您可以使用哪些磁盘

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

---[ 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没有找到,但是/dev/vda由于virtio_blk驱动程序(CONFIG_VIRTIO_BLK=y)可以读取。


0

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

sudo mount --bind /dev /mnt/dev

此外,在chroot之后:

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

从这里得到这个。


1
Tomeu已经提到的安装/dev/mnt/dev
Lekensteyn 2011年


0

由于/ boot分区已满,因此出现此问题,因此我的内核更新失败。我设法通过从GRUB菜单中的旧内核启动来解决此问题。

当设法启动时,我开始清除旧的内核,但是我设法解决了一些依赖问题,因此首先我必须卸载linux-server软件包

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.