本人电脑装的是Windows11和Manjaro双系统,那天Windows进行一次全新的系统大更新后,再进入Linux系统时就报错了。
报错如下:
error: file ‘/boot/grub/x86_64-efi/normal.mod’ not found.
Entering rescue mode…
grub rescue>_
从错误信息上可以看出,问题出现在grub找不到文件normal.mod,我们现在要做的就通过grub的rescue终端设置Linux的引导分区和grub文件路径并重新引导系统。
首先可以set
一下看一下目前的Linux启动指向位置,例子如下:
grub rescue> set
cmdpath= (hd0, gpt1) /EF I/Manjaro
prefix= (hd0, gpt7) /grub
root=hd0, gpt7
我们要做的就是改变现在的位置(root和prefix),让系统指向正确的启动位置,跟着下面的步骤做就好了。
第一步,要查找系统引导所在的分区
用ls命令列出所有的分区
grub rescue> ls
(hd0) (hd1) (hd1,gpt8)….
根据你自己的记忆大概定位系统引导所在的分区(如果不记得那就只能逐个去试了)并用ls定位引导所在的分区(输出包含boot/)。
如下例子可以看出(hd0,gpt8)就是我们要找的分区:
grub rescue> ls (hd1,gpt6)/
./ ../ lost+found/
grub rescue> ls (hd0,gpt8)/
./ ../ lost+found/ bin/ boot/ dev/…
第二步,根据上一步所查找到的系统引导所在分区来配置grub引导
grub rescue> set root=(hd0,gpt8)
grub rescue> set prefix=(hd0,gpt8)/boot/grub
第三步,切换到normal模式
grub rescue> insmod normal
grub rescue> normal
如果上面设置没有错的话,就可以正常进入系统的grub菜单了,这样你就可以进入Linux系统了。但是,正常进入系统后,如果不先修复grub引导的话,重启电脑之后还是会进入刚刚那个rescue模式。
第四步,修复grub引导
在Linux系统终端写入以下命令:
> sudo update-grub
> sudo grub-install /dev/sda //这是将grub引导器安装在第一块磁盘的引导区
如果都没有报错的话,那问题就解决了,之后就能正常进入各个系统了。