麒麟OS开机显示grub rescue>说明GRUB第二阶段加载失败,需先用ls定位/boot分区,再set root和prefix、insmod normal进入标准菜单;进系统后立即执行grub2-mkconfig和grub2-install修复。

麒麟OS开机直接显示grub rescue>提示符,说明GRUB第二阶段加载失败,核心模块无法定位/boot/grub路径或分区识别异常,此时系统尚未读取任何配置文件,必须手动指定根分区和模块路径才能恢复引导。
先在grub rescue>里临时进系统
这一步不改硬盘,只验证分区结构是否完好。能进系统就说明数据没丢,后续再做持久修复。
输入ls,看到类似(hd0) (hd0,gpt1) (hd0,gpt2) (hd1)的输出,说明GRUB还能识别磁盘设备。
逐个尝试访问各分区的/boot/grub目录:比如执行ls (hd0,gpt2)/boot/grub/,如果返回normal.mod grub.cfg font.pf2等文件名,就说明这个分区是你的/boot所在位置。
确认分区后(假设是(hd0,gpt2)),一次性执行三行命令:
set root=(hd0,gpt2)
set prefix=(hd0,gpt2)/boot/grub
insmod normal
【prefix路径必须精确到/boot/grub,少一个斜杠或写成/boot/grub2都会报错】
最后输入normal,成功的话会立刻跳出标准GRUB菜单,用方向键选中内核按回车就能进系统。
进系统后立刻做持久修复
临时进系统只是权宜之计,重启后还会掉回rescue模式。必须重建配置并重装引导程序。
登录后打开终端,先检查/boot是否完整:ls /boot/vmlinuz-*和ls /boot/initramfs-*.img要有输出,否则内核文件已丢失,需先从安装镜像补全。
运行sudo grub2-mkconfig -o /boot/grub2/grub.cfg,重新生成启动菜单配置——这步依赖/etc/default/grub和扫描到的内核文件,缺一不可。
再执行引导重装:
如果是UEFI机器:sudo grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=KylinOS --recheck
如果是传统BIOS机器:sudo grub2-install /dev/sda
【/dev/sda写错成/dev/sda1会导致MBR损坏,务必核对lsblk输出】
最后强制刷写磁盘缓存:sync,避免重启时配置未生效。
若grub rescue>里根本找不到/boot/grub目录
方法一:扩大探测范围,尝试访问/boot本身
执行ls (hd0,gpt2)/boot/,看是否列出vmlinuz-*和initramfs-*.img。如果存在,说明/boot单独在一个分区,而/grub子目录可能被误删或移动;此时设prefix为(hd0,gpt2)/boot/grub2(注意是grub2而非grub)。
方法二:检查文件系统是否损坏
在grub rescue>中执行ls (hd0,gpt2)/,若返回error: unknown filesystem,说明该分区文件系统异常,需退出救援环境,用Live USB启动后运行sudo e2fsck -f /dev/sda2(替换为实际分区)修复ext4元数据。
方法三:跳过GRUB,用Linux内核直启
确认含内核的分区后(如(hd0,gpt2)),依次执行:
set root=(hd0,gpt2)
linux /boot/vmlinuz-5.10.0-kylin-amd64 root=/dev/sda2 ro
initrd /boot/initramfs-5.10.0-kylin-amd64.img
boot
这能绕过GRUB直接启动,进系统后再补全GRUB文件。










