GRUB引导损坏进入grub rescue>说明核心已加载但无法定位模块或配置文件,需先用ls定位/boot分区,再set root和prefix、insmod normal进入标准菜单,或手动linux/initrd/boot启动;进系统后立即sudo grub-install并update-grub/grub2-mkconfig修复。

GRUB引导损坏后进入grub rescue>命令行,说明GRUB核心已加载但无法定位模块或配置文件。此时无需重装系统,只要能定位/boot分区和内核文件,就能手动启动并完成后续修复。
第一步:识别并定位/boot所在分区
在grub rescue>提示符下执行:
-
ls—— 列出所有磁盘和分区(如(hd0,gpt2)、(hd0,msdos1)) - 逐个检查分区是否含
/boot目录:ls (hd0,gpt2)/boot/,直到看到vmlinuz-xxx和initrd.img-xxx或initramfs-xxx.img - 若
/boot未单独分区,直接查根分区;若独立存在,则找含/boot/grub或/boot/efi的分区
第二步:设置启动路径并加载正常模式
确认分区后(假设为(hd0,gpt2)):
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
set root=(hd0,gpt2)—— 设定系统根(或/boot所在分区) -
set prefix=(hd0,gpt2)/boot/grub—— 指向GRUB模块目录(UEFI下可能是/boot/efi/EFI/ubuntu/grub,需按实际路径调整) -
insmod normal—— 加载normal模块 -
normal—— 进入标准GRUB菜单,通常可直接选择启动项
第三步:无法进入菜单时,直接启动内核(应急)
若normal失败,可跳过菜单手动加载:
-
linux /boot/vmlinuz-$(version) root=UUID=xxxx ro—— 使用Tab键补全内核名,root=填根分区UUID(可用ls -l /dev/disk/by-uuid/在Live环境查,或尝试root=/dev/sda2) -
initrd /boot/initrd.img-$(version)—— 补全对应initrd文件名 -
boot—— 启动系统
第四步:进系统后立即永久修复
成功登录后,马上执行:
- 确认EFI分区是否挂载:
lsblk -f | grep -i efi,若未挂载,创建并挂载:sudo mkdir -p /boot/efi && sudo mount /dev/sda1 /boot/efi - 重装GRUB:
• BIOS系统:sudo grub-install /dev/sda
• UEFI系统:sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(ID按发行版改,如centos、fedora) - 更新配置:
• Debian/Ubuntu:sudo update-grub
• RHEL/CentOS/Fedora:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
做完这些,重启即可恢复正常启动。关键不是背命令,而是先找到/boot位置,再让GRUB知道它在哪。

















