Manjaro KDE + Windows10双系统 grub rescue修复教程

出现原因是由于分区调整或分区UUID改变造成grub2不能正常启动,从而进入修复模式了(grub rescue),也称救援模式。在该模式下在救援模式下只有很少的命令可以用:set, ls, insmod, root, prefix 1. set 查看环境变量,这里可以查看启动路径和分区。 2. ls 查看设备 3. insmod 加载模块 4. root 指定用于启动系统的分区,在救援模式下设置grub启动分区 5. prefix 设定grub启动路径

具体修复步骤如下

1、查看分区:grub rescue> ls 回车

会出现如下字样:

(hd0)  (hd0,gpt13)   (hd0,gpt12)  (hd0,gpt11)  (hd0,gpt10)  (hd0,gpt9)  (hd0,gpt8)  (hd0,gpt7)  (hd0,gpt6)  (hd0,gpt5)  (hd0,gpt4)  (hd0,gpt3)  (hd0,gpt2)  (hd0,gpt1)

注:上面是我的分区设备,每个人可能不一样,但原理都是一样的。

2.寻找Manjaro Linux引导所在分区

输入ls (hd0,msdos1)/,如下

grub rescue> ls (hd0,gpt1)/

若出现unknown filesystem或者其他不显示文件路径的字样,则尝试下一个

若出现的是包含grub的文件夹目录,那就是的要找的分区了。(注意,这里使用ls (hd0,gpt1)/尝试过程中,会有多个分区是有会出现文件夹和未文件的情况的)

3.确定引导在该分区

输入set,如下

grub rescue > set

若出现带以下代码,则说明找到的分区是正确的分区

prefix=(hd0,gpt9)/grub   //可能有所不同,非Manjaro的linux系统可能是prefix=(hd0,gpt11)/boot/grub
root=(hd0,gpt9)

4.修改启动分区

假如你的启动分区是(hd0,gpt11),则输入

set prefix=(hd0,gpt11)/grub    //这里要注意,要与之前的输入set得到的prefix路径所对应
set root=(hd0,gpt11)

修改prefix和root之后执行

insmod normal

加载基本模块,执行

normal

之后会看到你的grub可视化界面,切记,第一次启动必须进入manjaro

5.进入manjaro中更新grub

终端输入

sudo update-grub

等待更新完成

6.找到你的linux系统所在的硬盘编号

如果你不知道你的系统所在的硬盘号,先在终端执行sudo fdisk -l,来找到你的系统所在的硬盘编号,注意这里是整块物理硬盘的编号而非分区编号

7.更新grub信息

我这里的物理硬盘编号是nvme0n1,所以我以nvme0n1为例,终端输入

sudo grub-install /dev/nvme0n1

完成之后,修复grub成功

重启之后可能没有进入manjaro的引导界面,而是直接进入windows,解决办法是在bios里面的启动分区修改为manjaro所在的盘,之后重启即可看到manjaro的引导界面