引导 Ubuntu 安装盘时出现 “Grub rescue” 错误通常表示主引导记录(MBR)损坏、分区结构变更或 GRUB 配置文件丢失。以下是结合技术资料的系统性修复方案,按操作优先级排序:
一、临时进入安装系统(紧急修复)
步骤 1:定位 Ubuntu 分区
在 grub rescue> 提示符下执行:
ls # 列出所有磁盘分区(显示如 (hd0,msdos1)、(hd0,gpt2))
ls (hdX,Y)/boot/grub # 尝试每个分区,寻找包含 /boot/grub 的目录
关键说明:
X = 磁盘编号(从 0 开始)
Y = 分区编号(MSDOS 分区表用 msdos1,GPT 用 gpt1)
若听到提示音或无输出,表示分区无效
步骤 2:设置 GRUB 环境变量
set root=(hdX,Y) # 指向 Ubuntu 根分区或 /boot 分区
set prefix=(hdX,Y)/boot/grub # 设置 GRUB 路径
insmod normal # 加载正常模式模块
normal # 启动 GRUB 菜单
注意事项:
若 /boot 独立分区,路径应为 (hdX,Y)/grub
若提示 file not found,尝试 insmod /boot/grub/i386-pc/normal.mod
步骤 3:进入临时系统
成功后将显示 GRUB 启动菜单 → 选择 Ubuntu 启动项进入系统。
二、永久修复 GRUB(系统内操作)
方法 1:命令行修复(推荐)
sudo update-grub # 重建配置文件
sudo grub-install /dev/sdX # 安装 GRUB 到磁盘(X 为磁盘字母,如 sda)
关键参数:
grub-install 必须指向磁盘设备(如 /dev/sda),而非分区(如 /dev/sda1)
UEFI 系统需额外挂载 EFI 分区:
sudo mount /dev/sdaY /mnt # sdaY 为 EFI 分区(通常 100-500MB FAT32)
sudo grub-install --efi-directory=/mnt /dev/sda
方法 2:Live CD 修复(系统无法启动时)
用 Ubuntu 安装盘启动 → 选择 Try Ubuntu
挂载原系统分区:
sudo mount /dev/sdXY /mnt # sdXY 为 Ubuntu 根分区
sudo mount /dev/sdZW /mnt/boot # 若 /boot 独立分区(ZW 为其编号)
sudo mount /dev/sdUV /mnt/boot/efi # UEFI 系统挂载 EFI 分区
Chroot 并修复:
sudo chroot /mnt
grub-install /dev/sdX
update-grub
三、典型场景深度修复
场景 1:双系统重装 Windows 后 GRUB 丢失
原因:Windows 安装程序覆盖 MBR
修复流程:
按 一、二 恢复 GRUB
添加 Windows 启动项:
sudo os-prober # 检测其他系统
sudo update-grub # 自动添加 Windows 到启动菜单
场景 2:分区调整导致 UUID 变更
症状:启动时提示 error: disk 'UUID=XXXX' not found
解决方案:
在 GRUB 菜单按 e 编辑启动项 → 临时修改根分区为 /dev/sdXY
进入系统后更新 UUID:
sudo blkid # 查看新分区 UUID
sudo nano /etc/fstab # 更新根分区 UUID
sudo update-initramfs -u # 重建 initramfs
场景 3:文件系统损坏
检测命令:
sudo fsck /dev/sdXY -y # 强制修复分区(需卸载状态)
修复后:重装 GRUB(见 方法 2)
四、终极工具:Boot-Repair(自动化修复)
Live CD 中安装:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
运行并选择:
boot-repair # 选择 "Recommended repair"
原理:自动检测分区 → 修复 GRUB → 生成诊断报告
五、避坑指南与预防措施
| 风险点 | 预防方案 |
|---|---|
| MBR 被覆盖 | Windows 安装前物理拔除 Ubuntu 硬盘,或使用 bcdedit 设置双引导 |
| 分区表变更 | 调整分区前用 sudo dd if=/dev/sda of=./mbr.bak bs=512 count=1 备份 MBR |
| GRUB 升级失败 | 避免强制断电,更新时接 UPS |
| UEFI 安全启动拦截 | BIOS 中关闭 Secure Boot,或为 GRUB 添加签名 |
附:GRUB 救援模式常用命令速查
ls (hdX,Y)/ # 列出分区内容 set # 查看当前环境变量 linux /vmlinuz root=/dev/sdXY # 手动加载内核(高级) initrd /initrd.img # 加载初始化内存盘 boot # 启动系统
六、技术原理深度解析
Grub rescue 本质是 GRUB 第一阶段(MBR)加载成功,但第二阶段(core.img)找不到配置文件:
MBR(前 446 字节)存储 boot.img,负责加载磁盘间隙的 core.img
core.img 依赖 /boot/grub 中的模块(如 normal.mod)启动菜单
当以下结构损坏时触发救援模式:
分区表位移(如 Windows 重写 MBR)
/boot/grub 路径变更(如分区扩容)
文件系统损坏(EXT4/ BTRFS 元数据错误)
通过以上方案,>95% 的 Grub rescue 错误可修复。若仍失败,需考虑硬件故障(使用 smartctl -a /dev/sda 检测磁盘健康度)或尝试替换引导加载器(如 rEFInd)。建议关键操作前备份数据,避免分区误操作导致数据丢失。
















暂无评论内容