grub引导损坏时可通过五种方法恢复:一、live环境重装grub;二、grub rescue下临时引导;三、efibootmgr修复uefi启动项;四、grub命令行直启内核;五、boot-repair一键修复。

如果您在启动Linux系统时遇到GRUB引导菜单丢失、显示“grub rescue>”提示符或直接进入黑屏无法加载内核,则很可能是GRUB引导程序损坏或被Windows覆盖。以下是恢复GRUB引导启动项的多种救援方法:
一、使用Live CD/USB进入救援模式并重装GRUB
该方法适用于GRUB主引导记录(MBR或EFI分区)完全丢失,但系统根文件系统仍可挂载的情况。需借助Ubuntu、CentOS等发行版的Live环境执行修复。
1、插入Linux Live USB并从其启动,选择“Try Ubuntu”或“Troubleshoot → Rescue mode”进入临时系统。
2、打开终端,执行sudo fdisk -l识别系统所在磁盘及分区,例如确认/dev/sda为系统盘,/dev/sda2为根分区,/dev/sda1为EFI系统分区(若为UEFI)或/boot分区(若为BIOS)。
3、创建挂载点并挂载根分区:sudo mkdir /mnt/sysroot && sudo mount /dev/sda2 /mnt/sysroot。
4、若系统使用UEFI,还需挂载EFI系统分区:sudo mount /dev/sda1 /mnt/sysroot/boot/efi;若为BIOS且/boot独立分区,则执行:sudo mount /dev/sda1 /mnt/sysroot/boot。
5、绑定关键虚拟文件系统:sudo mount --bind /dev /mnt/sysroot/dev && sudo mount --bind /proc /mnt/sysroot/proc && sudo mount --bind /sys /mnt/sysroot/sys。
6、切换到目标系统环境:sudo chroot /mnt/sysroot。
7、重新安装GRUB:对于BIOS系统执行grub-install /dev/sda;对于UEFI系统执行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(路径与ID按实际发行版调整)。
8、更新GRUB配置:update-grub(Debian/Ubuntu)或grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)。
9、退出chroot并重启:exit,随后执行sudo reboot,拔除Live介质。
二、在grub rescue>提示符下临时引导进入系统
该方法不修复GRUB,仅用于紧急访问系统以执行后续修复。适用于能识别磁盘但GRUB核心映像(core.img)未加载成功的情形,依赖手动定位/boot和模块路径。
1、在grub rescue>界面输入ls,列出所有磁盘分区,如显示(hd0,msdos1) (hd0,msdos2) (hd1,gpt1)等。
2、逐个检查分区是否含/boot/grub目录,例如输入ls (hd0,msdos2)/boot/grub/,若返回... grub.cfg ... i386-pc/ x86_64-efi/ ...,则确认该分区为/boot所在位置。
3、设置根设备与前缀路径:set root=(hd0,msdos2),然后set prefix=(hd0,msdos2)/boot/grub。
4、加载正常GRUB模块:insmod normal;若提示错误,尝试insmod linux与insmod initrd后再试。
5、启动正常GRUB界面:normal。
6、进入系统后立即执行sudo update-grub && sudo grub-install /dev/sda(BIOS)或对应UEFI命令,防止下次重启再次进入rescue模式。
三、使用systemd-boot或efibootmgr修复UEFI启动项
该方法专用于UEFI固件环境,当GRUB已正确安装但UEFI启动管理器中缺失对应条目,或启动顺序被篡改时使用。无需挂载系统,仅需在已启动的Linux中操作。
1、确认当前处于UEFI模式:ls /sys/firmware/efi/efivars,若无报错即为UEFI。
2、列出当前EFI启动项:sudo efibootmgr -v,查找是否存在Boot0000*等含ubuntu、centos或grub字样的条目。
3、若缺失,手动添加启动项:sudo efibootmgr -c -d /dev/sda -p 1 -L "Ubuntu" -l "\EFI\ubuntu\grubx64.efi"(参数说明:-d指定磁盘,-p指定EFI分区号,-L为启动菜单名,-l为EFI路径,路径需与/boot/efi/EFI/ubuntu/grubx64.efi一致)。
4、调整启动顺序,将新条目置顶:sudo efibootmgr -o 0000,0001,0002(其中0000为刚添加的Boot编号)。
5、验证修改:sudo efibootmgr确认输出中第一行为目标启动项,且BootCurrent:与之匹配。
四、通过GRUB命令行直接启动内核(单次应急)
该方法绕过GRUB配置文件,在无法加载grub.cfg但内核与initrd仍存在于/boot时,实现单次手工引导。适用于GRUB配置损坏但文件未丢失的场景,不改变系统状态。
1、开机中断启动过程,在GRUB菜单出现时按c键进入命令行模式。
2、查看可用分区:ls,再逐个执行ls (hd0,1)/直至找到含vmlinuz-*与initrd.img-*文件的/boot目录。
3、设定根分区:set root=(hd0,1)(以实际分区为准)。
4、加载内核镜像:linux /boot/vmlinuz-$(uname -r) root=/dev/sda2 ro(root=参数需替换为真实根设备,如/dev/mapper/vg0-lv_root或UUID形式root=UUID=xxxx)。
5、加载初始内存盘:initrd /boot/initrd.img-$(uname -r)。
6、启动系统:boot。
7、成功进入系统后,立即运行<strong><font color="green">sudo update-grub</font></strong>重建配置,避免下次仍需手动操作。
五、使用boot-repair工具一键修复(图形化辅助)
该方法面向不熟悉命令行的用户,利用社区维护的自动化脚本检测并修复常见引导问题,涵盖MBR重写、配置生成、EFI条目注册等,但需确保网络连通且Live环境兼容。
1、从Ubuntu Live USB启动,连接网络,打开终端。
2、依次执行添加仓库与安装命令:sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update && sudo apt-get install -y boot-repair。
3、运行工具:boot-repair,等待GUI界面加载。
4、点击Recommended repair按钮,工具将自动执行分区扫描、GRUB重装、配置更新及EFI注册。
5、修复完成后,界面显示Please write on a paper the URL (paste.ubuntu.com/XXXXXX/),该链接包含详细日志,务必保存该URL以备排查失败原因。
6、按提示重启系统,移除Live介质。










