洋芋博客

一个什么都分享的博客

本人电脑装的是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引导器安装在第一块磁盘的引导区

如果都没有报错的话,那问题就解决了,之后就能正常进入各个系统了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注