多种方法解决开机显示grub rescue>_的故障

发布日期:分类:Linux & homelab 多种方法解决开机显示grub rescue>_的故障无评论
时效性提醒:本文首次编写发布于8年前。

grub rescue>_,即GRUB启动管理器的救援模式,可以理解为一个残缺的GRUB,通常在GRUB无法找到其相关文件时出现,一般是由分区变更引起的。

用4个字概括就是:引导挂了~

 

下面两张方法适用于linux的分区还在的情况,如果你是希望删除linux而删掉了linux,请看最后一种方式。

下面两张方法中,部分命令仅针对deb系发行版,其他发行版类似。

法一:使用LiveCD启动并重新安装GRUB

这种方法最为简单,不用输入繁琐的GRUB命令。

首先LiveCD启动,进入Live系统,将硬盘上linux的/分区挂载到Live系统中例如/mnt的地方:

sudo mount /dev/sdaN /mnt          #按实际情况替换N,如果你的启动磁盘不是sda,也请替换为你的启动磁盘

如果单独分了/boot,则一并挂载,例如:

sudo mount /dev/sdaM /mnt/boot     #按实际情况替换M,如果你的启动磁盘不是sda,也请替换为你的启动磁盘

然后重新安装GRUB:

sudo grub-install --root-directory=/mnt/ /dev/sda

若看到类似如下的输出,则表示成功完成修复:

Installing for i386-pc platform.
Installation finished. No error reported.

法二:先将GRUB恢复到正常模式,然后进入Linux重新安装GRUB

既然GRUB找不到他的文件,那么我们就手动加载即可,救援模式其实就是一个支持的命令有限的GRUB命令行,我们可以在其中执行一些命令。
先输入以下命令:

ls

GRUB会列出所有的磁盘和上面的分区,如:

(hd0) (hd0,msdos5) (hd0,msdos1) (hd0,msdos2)

然后就一个分区一个分区的试,看看那个是linux的/分区,如果你当分了/boot,则要找/boot分区
如果/boot没有单独分区,用以下命令:

ls (hd0,msdosN)/boot/grub

如果/boot单独分区,则用下列命令:

ls (hd0,msdosN)/grub

正常情况下,会列出来一大堆文件,很多文件的扩展名是.mod和.lst和.img,还有一个文件是grub.cfg。假设找到(hd0,msdos2)时,显示了文件夹中的文件,则表示我们要找的就是这个分区。

然后我们要让GRUB去加载之前它没有加载的文件
下面是/boot没有单独分区的命令:

grub rescue>set root=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos2)/boot/grub
grub rescue>insmod /boot/grub/normal.mod

下面是/boot 单独分区的命令:

grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod

然后调用如下命令,就可以看到GRUB的菜单了。

grub rescue>normal

然后进入Linux系统,执行:

sudo update-grub             #更新引导菜单,非deb系的发行版可能不是这个命令
sudo grub-install /dev/sda   #如果你的启动磁盘不是sda,请替换为你的启动磁盘

至此,修复完毕。

法三:使用PE系统直接安装Windows的启动管理器

这种方法适合已经删除了Linux分区,或者正准备删除Linux分区,然后回到Windows系统的人。

首先你需要一个装在U盘上的PE,网上一搜全是,个人比较推荐这个还算比较干净的PE:http://www.wepe.com.cn/

然后启动PE系统,里面一般有个修复Windows引导的工具,运行即可。

作者:WuSiYu

学生,Web开发者,智能硬件&IOT爱好者

发表评论

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