在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成功安装了!
Keep it simple!