在grub的rescue模式修复linux引导

今天在windows 10系统收到系统更新通知,没看清楚就手贱点了马上更新。以为只是像那些普通更新一样重启一下更新就完了,万万没想到这个是覆盖更新,也就是说这是一个全新的系统更新而不是系统补丁。在安装的过程中我就在心中默念 “完了,这安装完成linux的系统的引导肯定是要手动修复了。”,果然安装完之后默认是用windows启动引导,F2设置切换到deepin linux的引导后依然没法正常启动linux。要修复这个问题并不复杂,下面这篇文章记录了修复引导的全过程。

错误信息

error: file '/boot/grub/x86_64-efi/normal.mod' not found.
Entering rescue mode...
grub rescue> _

进入系统

从错误信息上可以看出,问题出现在grub找不到文件normal.mod,我们现在要做的就通过grub的rescue终端设置linux的引导分区和grub文件路径并重新引导系统。

  • 查找系统引导所在的分区:

用ls命令列出所有的分区

grub rescue> ls
(hd0) (hd1) (hd1,gpt8)....

根据你自己的记忆大概定位系统引导所在的分区(如果不记得那就只能逐个去试了)并用ls定位引导所在的分区(输出包含boot/

如下图可以看出(hd1,gpt7)就是我们要找的分区:

grub rescue> ls (hd1,gpt6)/
./ ../ lost+found/
grub rescue> ls (hd1,gpt7)/
./ ../ lost+found/ bin/ boot/ dev/...
  • 配置grub引导
grub rescue> set root=(hd1,gpt7)
grub rescue> set prefix=(hd1,gpt7)/boot/grub
  • 切换到normal模式
grub rescue> insmod normal
grub rescue> normal

如果上面设置没有错的话,就可以正常进入系统的grub菜单了。

安装grub到efi分区

正常进入系统后,如果不先修复grub的引导的话,重启电脑之后还是会进入刚刚那个rescue模式。

  • 找出你的efi分区挂载点

运行df命令:

df

如下图可看出efi挂载点是:/dev/sdb2

  •  重新安装grub

用grub-install命令安装grub:

如果提示找不到某个命令,尝试把你的/usr/sbin添加到环境变量PATH中:

打开:vim /etc/profile

添加: export PATH=$PATH:/usr/sbin

应用配置: source /etc/profile

sudo grub-install /dev/sdb2

如果得到如下输出,恭喜你grub成功安装了!

转载请注明出处:http://www.cnblogs.com/keitsi/p/6229005.html

原文地址:https://www.cnblogs.com/keitsi/p/6229005.html