在一次服务器启动过程中,我遇到了一个严重问题:系统无法正常启动,并报错
KERNEL PANIC! Please reboot your computer.
UFS: Unable to mount root fs on unknown-block(0,0)
这个错误通常意味着内核在启动时无法找到或挂载根文件系统。经过排查,最终通过 重新安装 GRUB 和 重新生成 initramfs 解决了问题。下面记录完整的操作步骤,供大家参考。
前提条件
一台无法正常启动的 Ubuntu 服务器
一个 Ubuntu 启动盘(U盘启动盘)
基本的 Linux 命令操作知识
1. 从 U 盘启动
插入制作好的 Ubuntu 启动 U 盘
重启服务器并持续按 F7(部分主板可能是 F12/ESC)进入启动菜单
选择从 U 盘启动
在 Ubuntu 启动菜单中选择 “Try Ubuntu” 进入临时系统(不安装)
2. 查看磁盘与分区
首先确认目标系统的磁盘和分区:
sudo fdisk -l
比如我系统的磁盘是 /dev/nvme0n1
,继续查看其分区:
sudo fdisk -l /dev/nvme0n1
我得到的结果是:
/dev/nvme0n1p2
—— 根分区 (/)/dev/nvme0n1p1
—— EFI 分区 (UEFI 系统必需)
3. 挂载系统分区
将原系统分区挂载到 /mnt
目录:
# 挂载 root 分区
sudo mount /dev/nvme0n1p2 /mnt
# 挂载 EFI 分区(仅 UEFI 系统需要)
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
4. 挂载必要的虚拟文件系统
进入 chroot 前需要挂载这些系统目录:
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 mount --bind /run /mnt/run
5. 进入 chroot 环境
切换到原系统环境:
sudo chroot /mnt
此时我们相当于进入了原服务器的系统内部,可以进行修复操作。
6. 修复引导
重新安装 GRUB
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
⚠️ 如果遇到
EFI variables cannot be set
警告,可以忽略,后面 update-grub 会处理。
重新生成 GRUB 配置
update-grub
重新生成 initramfs
update-initramfs -c -k all
7. 退出并重启
exit
sudo reboot
拔掉 U 盘,服务器应当能正常进入 Ubuntu 系统了。
总结
通过以上操作,我成功解决了 KERNEL PANIC! UFS: Unable to mount root fs 的问题。
核心思路:
从 LiveCD/U盘启动
挂载原系统分区
进入 chroot 环境
重新安装引导程序和修复 initramfs
这种方法适用于大多数由于引导配置损坏或 initramfs 丢失引起的启动失败问题。