[Share Experiences] grub修复
Tofloor
poster avatar
kazuma
deepin
2021-07-02 07:01
Author

2021年07月01日22:28:27

今天更新了下deepin,升级到了deepin 2020.2.2,重启后发现无法正常进入系统而是进到了grub的页面

  Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists possible device or file cimpletions.
grub>

一脸懵逼-_-????

然后一通搜索大致理解了原因(个人理解)。

系统在启动是加载了错误的引导位置,导致无法正常启动,因此启动了这个界面以供修复使用。

使用set命令可以查看下当前的配置

grub> set
...
root=hd0,gpt3
prefix=(hd0,gpt3)/boot/efi/UOS
...

看到这里先别急,只需要关注上面提到的两个配置项root,prefix

原因就处在这里,prefix里指定的启动位置缺少部分文件,导致启动失败。

接下来就是要找到正确的启动文件夹

grub> ls
hd0 (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) ...
grub> ls hd0/boot/grub
error: `/boot/grub` not found.
grub> ls (hd0,gpt4)/boot/grub
fonts  grub.cfg  grub.cfg.bak  grubenv  locale  themes  unicode.pf2  x86_64-efi

执行之后发现(hd0,gpt4)这个分区存放的是正确的启动配置。

之后执行以下命令可正常进入系统

grub> set root=(hd0,gpt4)
grub> set prefix=(hd0,gpt4)/boot/grub
grub> insmod normal
grub> normal

不出意外的话,接下来会正常进入系统选择菜单,选择deepin后进入系统

但是此时修复并没有结束,重启之后还是进入了grub页面。

然后又是一通搜索,发现大多数的解决方案是重新挂在boot分区,但是总感觉没有必要。因此又是一通搜索知道看到了一篇帖子,写到替换文件,这是我才意识到了这种修复方式。

重启,进入grub页面。执行set指令 发现prefix默认的位置是

prefix=(hd0,gpt3)/boot/efi/UOS

再次进入系统发现

对比之后发现

无法启动的文件列表 /boot/efi/EFI/UOS

grub.efi  shimx64.efi

正常启动的文件列表 /boot/efi/EFI/deepin

BOOTX64.CSV  fbx64.efi  grub.cfg  grub.efi  grubx64.efi  mmx64.efi  shimx64.efi

此时把正常的启动配置文件拷贝到了/boot/efi/UOS中,重启发现已经可以正常进入系统选择页面了。

至此,问题解决. 

希望给同样有这样问题的小伙伴一点思路。

Reply Favorite View the author
All Replies
pzm9012
Moderator
2021-07-02 07:55
#1

感谢分享

Reply View the author
junlin1000
deepin
2021-07-04 06:33
#2

挺棒的。顶上去。

Reply View the author
mliuchnegyu
deepin
2021-07-19 18:28
#3

楼主,能帮我看下我的这个

https://bbs.deepin.org/zh/post/223427?id=223427&limit=20&offset=0&postId=1251421

Reply View the author