grub启动异常表现为卡在grub rescue>或“unknown filesystem”,修复需重建配置、重装引导并确保分区识别正确;先用live cd挂载根及/boot/efi分区,chroot后依bios/uefi模式运行grub-install,再update-grub或grub2-mkconfig。

GRUB 启动异常通常表现为开机卡在 grub rescue> 或 error: unknown filesystem 等提示,本质是 GRUB 无法正确加载配置、内核或 initramfs。修复核心在于重建 GRUB 配置、重装引导程序,并确保分区识别和路径正确。
确认当前系统分区与挂载点
进入 Live CD/USB(如 Ubuntu 或 CentOS 安装盘),打开终端执行:
-
运行
lsblk -f查看所有磁盘及文件系统,识别出根分区(/)、/boot 分区(如有)、EFI 分区(UEFI 模式下为 FAT32 格式,挂载点通常为/boot/efi) -
手动挂载根分区:例如根在
/dev/sda2,执行sudo mount /dev/sda2 /mnt -
若存在独立 /boot 或 /boot/efi,一并挂载:
sudo mount /dev/sda1 /mnt/boot(传统 BIOS+ext4 /boot)sudo mount /dev/nvme0n1p1 /mnt/boot/efi(UEFI+FAT32 EFI 分区)
chroot 进入原系统并重装 GRUB
挂载完成后,需绑定关键虚拟文件系统,再 chroot:
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys-
sudo chroot /mnt进入原系统环境 -
BIOS 主板(MBR):运行
grub-install /dev/sda(注意目标是磁盘如/dev/sda,不是分区) -
UEFI 主板(GPT):确保已挂载 EFI 分区,再运行
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB - 最后更新配置:
update-grub(Debian/Ubuntu)或grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)
手动从 grub rescue 提示符临时启动(应急)
若无法进入 Live 环境,可尝试在 grub rescue> 下定位并启动:
- 用
ls列出所有磁盘分区,如(hd0,msdos1)、(hd0,gpt2) - 逐个检查分区内容:
ls (hd0,msdos1)/,寻找包含vmlinuz-xxx和initrd.img-xxx的/boot目录 - 设好前缀和根:假设内核在
(hd0,msdos2)/boot,执行:set prefix=(hd0,msdos2)/boot/grubset root=(hd0,msdos2) - 加载模块:
insmod normal→normal回车即可进入常规 GRUB 菜单 - 若需直接启动:指定内核与 initrd(路径以
/开头,因 root 已设):linux /boot/vmlinuz-5.15.0-xx-generic root=/dev/sda2initrd /boot/initrd.img-5.15.0-xx-genericboot
预防再次异常的关键设置
修复后建议立即加固引导稳定性:
- 检查
/etc/default/grub中GRUB_DEFAULT和GRUB_TIMEOUT是否合理;禁用快速启动(Windows 双系统时)避免 EFI 分区被锁定 - UEFI 模式下,确认
efibootmgr -v输出中 GRUB 条目存在且顺序靠前;必要时用efibootmgr -o XXXX,XXXX调整启动顺序 - 定期运行
update-grub(尤其内核升级后);备份 GRUB 配置:cp /boot/grub/grub.cfg /boot/grub/grub.cfg.backup - BIOS 用户可考虑使用
grub-install --recheck强制重新探测设备映射








