描述:电脑开机无法正确进入双系统选择界面,而是进入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的引导界面