Ubuntu安装盘Grub救援模式修复指南

引导 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)。建议关键操作前备份数据,避免分区误操作导致数据丢失。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容