Linux引导损坏可修复,表现为grub rescue>、grub>、黑屏或“error: unknown filesystem”,本质是GRUB无法定位内核或配置文件;需先区分提示符类型,再用Live USB挂载原系统、chroot后重装GRUB并更新配置。

Linux 系统引导损坏,常见表现为开机卡在 grub rescue> 或 grub> 提示符、黑屏、报错 “error: unknown filesystem” 或 “File not found”。这不是系统崩溃,而是 GRUB 无法定位内核或配置文件——数据大多完好,修复即可恢复启动。
确认当前是哪种 GRUB 异常状态
先看屏幕最末尾的提示符:
-
grub rescue>:GRUB 连基本模块都加载失败,可用命令极少(仅
ls、set、insmod)。说明/boot/grub目录可能被删、分区挂载点错位,或 EFI 系统分区未识别。 -
grub>:模块已加载,但找不到或读不了
/boot/grub/grub.cfg。此时 TAB 补全可用,能直接指定内核启动。常见于配置文件误删、UUID 变更、Windows 更新覆盖 EFI 启动项。
用 Live USB 进入系统重装 GRUB
这是最通用、成功率最高的方法,适用于 BIOS 和 UEFI 两种启动模式:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 用 Ubuntu/CentOS 等 Live USB 启动,选 Try without installing;
- 终端执行
sudo fdisk -l,识别原系统根分区(如/dev/nvme0n1p2)和 EFI 分区(标有 EFI System,通常为 FAT32,如/dev/nvme0n1p1); - 挂载根分区:
sudo mount /dev/nvme0n1p2 /mnt; - 若为 UEFI 系统,再挂载 EFI 分区:
sudo mkdir -p /mnt/boot/efi && sudo mount /dev/nvme0n1p1 /mnt/boot/efi; - 挂载虚拟文件系统:
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys; - 进入原系统:
sudo chroot /mnt; - 重装 GRUB:
• BIOS 系统:运行grub-install /dev/nvme0n1(注意是磁盘,不是分区);
• UEFI 系统:运行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(ubuntu可按实际发行版改为centos、fedora等); - 更新配置:
• Debian/Ubuntu:运行update-grub;
• RHEL/CentOS/Fedora:运行grub2-mkconfig -o /boot/grub2/grub.cfg; - 退出并重启:
exit→sudo reboot,拔掉 USB。
在 grub> 下临时启动并修复配置
如果能看到 grub> 提示符,可快速进系统再持久修复:
- 输入
ls查看所有分区,例如输出(hd0) (hd0,gpt1) (hd0,gpt2); - 逐个检查:
ls (hd0,gpt2)/boot/,直到找到含vmlinuz-和initrd.img-的分区; - 设根分区:
set root=(hd0,gpt2); - 加载内核与初始化镜像(路径需根据实际调整):
linux /boot/vmlinuz-5.15.0-112-generic root=UUID=xxxxxx roinitrd /boot/initrd.img-5.15.0-112-generic; - 启动:
boot; - 进系统后立即执行对应发行版的
update-grub或grub2-mkconfig -o ...重建配置。
UEFI 环境下快速恢复启动项
双系统用户常因 Windows 更新丢失 GRUB 启动项,无需重装 GRUB,只需重注册:
- Live 环境中挂载好
/boot/efi后,进入 chroot; - 运行
efibootmgr -v查看当前启动项; - 若 GRUB 条目缺失,手动添加:
efibootmgr -c -d /dev/nvme0n1 -p 1 -L "ubuntu" -l "\EFI\ubuntu\shimx64.efi"(路径依发行版而异,Ubuntu 用shimx64.efi,CentOS 用grubx64.efi); - 再执行
efibootmgr -o XXXX,XXXX设置启动顺序(XXX 为数字编号)。

















