核心结论:开机直接进入 grub rescue 或者 grub > 命令行,本质是 GRUB 引导信息丢失分区识别错误,最常见原因是双系统分区变动硬盘顺序改动误删 EFI 分区,解决思路分两种,第一种是临时手动输入 grub 指令临时启动系统,第二种是修复重建 grub 引导,让下次开机不再进入命令行。之所以会卡在 grub 指令界面,是因为 GRUB 找不到配置文件 grub.cfg,或者找不到内核文件,无法自动加载操作系统,所以停留在交互命令模式,等待用户手动输入引导命令。临时启动适合应急,修复重建才是根治方案。
临时手动引导启动步骤(grub> 命令行)
- 先输入指令查看磁盘分区
ls
会列出 (hd0) (hd0,gpt1) 这类分区,逐个输入 ls (hd0,gptx)/ 查看里面文件,找到含有 boot 文件夹或者 vmlinuz 内核文件的分区,这个就是根分区或者 boot 分区
2. 设置根分区,举例分区是 (hd0,gpt2)
set root=(hd0,gpt2)
- 指定内核文件并启动
linux /boot/vmlinuz-xxx root=/dev/sda2
initrd /boot/initrd.img-xxx
boot
注意 vmlinuz 和 initrd 后面版本号要和分区里面真实文件名一致,root 后面填写系统根分区设备号
根治重建 GRUB 引导(推荐)
- 使用 Linux 安装 U 盘启动,进入试用 Live 系统
- 挂载系统根分区,假设根分区是 /dev/sda2
sudo mount /dev/sda2 /mnt
- 如果单独存在 boot 分区,额外挂载 boot,EFI 分区也要挂载
sudo mount /dev/sda1 /mnt/boot/efi
- 执行 grub-install 重装引导
sudo grub-install /dev/sda
- 重新生成 grub.cfg 配置文件
sudo update-grub
- 重启拔掉 U 盘,正常进入系统
故障对照表
| 故障提示 | 主要原因 | 处理方案 |
|---|---|---|
| grub rescue> | grub.cfg 丢失,找不到分区 | 优先 LiveU 盘重建 grub 引导 |
| grub> 命令行 | 引导加载但是配置异常 | 可临时手动引导,之后重建引导 |
| 双系统改完顺序报错 | BIOS 启动项硬盘顺序错乱 | 进 BIOS 调整第一启动项,再修复 grub |
| EFI 分区损坏 | UEFI 模式 EFI 分区删除 | 需要恢复 EFI 分区再重装 grub |
核心使用要点
- MBR 传统 Legacy 引导和 UEFI 引导修复命令不一样,UEFI 必须挂载 EFI 分区,不能只写 grub-install 到整盘
- 临时手动引导只是应急,重启之后还会再次进入 grub 命令行,一定要做 update-grub 重建配置
- 分区编号 sda sdb 还有 gpt 编号不要填错,填错会提示文件找不到
- 如果是 Windows 和 Linux 双系统,修复 grub 之后一般会自动识别 Windows 启动项
【常见问题】
问题 1 grub 开机指令要怎么解决 临时引导成功重启又回到 grub 怎么办
回答 1 grub 开机指令要怎么解决,临时手动引导只是一次性启动,重启依旧报错,必须进入 Live 系统执行 grub-install 和 update-grub 重建引导。
问题 2 grub 开机指令要怎么解决 UEFI 模式和 Legacy 修复有区别吗
回答 2 grub 开机指令要怎么解决,有区别,UEFI 模式需要挂载 EFI 分区,grub-install 指定 ESP 分区,Legacy 传统 MBR 是写入硬盘主引导记录。
问题 3 grub 开机指令要怎么解决 ls 之后找不到 vmlinuz 内核文件
回答 3 grub 开机指令要怎么解决,说明选错分区,继续逐个 ls 其他分区,确认内核文件所在分区,也有可能内核文件已经损坏,需要重装系统内核。
问题 4 grub 开机指令要怎么解决 双系统修复 grub 之后 Windows 启动项不见了
回答 4 grub 开机指令要怎么解决,执行 update-grub 的时候 os-prober 没有识别 Windows,可以开启 os-prober 之后重新 update-grub,或者手动添加 Windows 启动条目。
【免责申明】
本内容仅为 GRUB 引导故障修复技术参考,操作涉及磁盘分区,重要数据请提前备份,不同发行版命令细节存在差异,请结合系统版本执行。


