1. 现象描述
在 ThinkBook 14 G6 (Intel Core Ultra 平台) 上运行 Ubuntu 24.04 时,系统在一次常规内核更新后无法正常引导。屏幕显示以下关键错误:
Kernel Panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
异常表现:
- 默认启动项(最新内核
6.17.0-23)报错。 - 通过 GRUB 高级选项切换到旧版内核(
6.17.0-22)却能成功进入系统。 - 根分区
/dev/nvme0n1p2的 UUID 配置与/etc/fstab完全一致。
2. 病理分析:为什么磁盘没坏却挂载失败?
通常 Unable to mount root fs 被误认为是磁盘损坏或 UUID 错误。但在本次案例中,真正的病灶隐藏在 内核驱动编译(DKMS) 环节。
核心诱因:DKMS 编译中断导致的"半成品"镜像
在 Ubuntu 更新内核时,系统会通过 DKMS (Dynamic Kernel Module Support) 为新内核自动编译第三方驱动(本例中为 Realtek 无线网卡驱动 rtl88x2bu)。
故障连锁反应:
- 驱动不兼容 :旧版的
rtl88x2bu驱动源码无法适配 Linux6.17内核,导致编译报错(Bad exit status 2)。 - 脚本截断:由于驱动编译失败,内核软件包的配置进程被强行中止(Return Code 11)。
- 镜像损毁 :至关重要的一步------生成
initrd.img(初始内存盘) 在此过程中未能完整执行。 - 启动崩溃 :内核启动时因为缺失完整的
initrd.img,导致其无法加载 NVMe 驱动,也就无法识别并挂载 SSD 上的根分区。
3. 解决方案:破除"死循环"
既然旧内核能进,我们只需在正常环境下清理掉不兼容的驱动,并手动补全受损的内核镜像。
第一步:清理冲突驱动
移除导致编译报错的陈旧驱动模块,解除对软件包管理器的阻塞。
bash
# 查看当前 DKMS 状态,确认报错的模块版本
sudo dkms status
# 移除不兼容的驱动模块(版本号请根据终端实际报错修改)
sudo dkms remove rtl88x2bu/5.8.7.1 --all
第二步:修复软件包配置
执行强制配置命令,让系统重新完成之前被打断的内核安装工作。
Bash
# 修复损坏的依赖并自动触发内核配置
sudo dpkg --configure -a
注:执行此步时,观察终端输出,确保它成功触发了 update-initramfs 且没有报错。
第三步:加固引导配置
手动更新所有内核镜像并重建 GRUB 菜单,确保引导指针指向正确。
Bash
# 强制更新所有内核版本的 initramfs
sudo update-initramfs -u -k all
# 更新引导程序配置
sudo update-grub
4. 经验总结与避坑 Tips
4.1 不要忽视更新时的编译报错
在终端执行 apt upgrade 时,如果看到 dkms: autoinstall ... fail!,哪怕更新看似完成了,系统也极有可能在下次重启时无法开机。务必在重启前处理掉报错。
4.2 关注磁盘空间
虽然根分区占用 76% 尚有余量,但如果系统更新频繁,建议定期清理旧内核以释放 /boot 相关的存储压力:
Bash
sudo apt autoremove
4.3 硬件环境适配
ThinkBook 14 G6 属于较新硬件,对内核版本较为敏感。如果必须安装第三方驱动(如特定网卡或显卡驱动),优先寻找支持 Linux 6.x 以上版本的社区维护版,避免使用随硬件附带的陈旧源码包。