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

这是一个非常经典的 Linux 启动错误。根据截图中的关键信息:

核心错误信息: Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

分析原因: 这个错误表明 Linux 内核已经成功加载,但是它无法挂载根文件系统(Root Filesystem)。简单来说,内核启动了,但找不到真正的操作系统文件在哪里。

unknown-block(0,0) 这个特定的代码通常指向以下几个最常见的原因:

  1. initramfs/initrd 损坏或丢失(最常见)
    • Linux 启动需要一个临时的文件系统(initramfs)来加载加载根分区所需的驱动程序。
    • 如果在上次系统更新(例如 apt upgrade)过程中,initrd.img 文件生成失败(可能因为 /boot 分区满了,或者中途断电),内核就无法识别硬盘或文件系统,从而报错。
  2. GRUB 配置错误
    • 引导加载程序(GRUB)传递给内核的 root= 参数指向了一个不存在的设备,或者 UUID 发生了变化。
  3. VMware 虚拟化特定的驱动问题
    • 截图显示你在使用 VMware Virtual Platform
    • 如果你最近更改了虚拟机的硬盘控制器类型(例如从 LSI Logic 改为 PVSCSI),而 initramfs 里没有包含新的驱动,也会导致内核找不到硬盘。
  4. 内核版本不匹配
    • 你正在尝试启动的内核版本 5.15.0-164-generic 可能有问题,或者与其配套的 initrd 文件不匹配。

如何修复(建议步骤):

方法 1:尝试启动旧内核(最简单)

  1. 重启虚拟机。
  2. 在启动过程中,按住 Shift 键(或 Esc 键)进入 GRUB 菜单
  3. 选择 “Advanced options for Ubuntu”(Ubuntu 高级选项)。
  4. 列表中会有多个内核版本。选择一个带有版本号较旧的内核(不要选带有 recovery mode 的,除非普通模式也不行)。
  5. 如果旧内核能成功进入系统,说明是新内核的 initramfs 坏了。
  6. 进入系统后,运行以下命令修复:
    • sudo dpkg --configure -a
    • sudo update-initramfs -u -k all
    • sudo update-grub
  7. 注意:如果你的 /boot 分区满了,你需要先清理旧内核释放空间。

方法 2:使用 Live CD/ISO 修复 如果方法 1 无效,你需要:

  1. 加载 Ubuntu 安装镜像(ISO)启动虚拟机,选择 “Try Ubuntu”。
  2. 挂载原来的系统磁盘,并使用 chroot 进入环境重新生成 initramfs(这个过程比较复杂,建议先试方法 1)。

总结: 这大概率是一次系统更新导致 initramfs 生成不完整引起的。尝试通过 GRUB 菜单引导旧内核通常能解决问题。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.