[Tutorials] 【小白教程】第一期:谁动了我的Grub?——Grub 修复
Tofloor
poster avatar
PossibleVing
deepin
2021-01-21 23:22
Author

小白教程第一期:谁动了我的Grub?

修复 Grub 命令行以及 Grub Rescue 问题的详细教程

Hello,大家好,我是 Ving 哥~

想必上图中的界面,大家差不多都见过。这是 Grub 命令行。

让我们设想这样的情景:

你好不容易辛辛苦苦配置好了多启动方案,结果到了有一天,你一开机,就看到上面这几行白字。

 

![](https://storage.deepin.org/thread/20210121093246671_图片 1.png)

不用说,我知道你们是什么感受~

那么今天的小白教程,我们就来看看遇到这样的情况,应该如何解决。

首先我们要知道的是——

 

1. 本篇教程的适用范围

1.1 出于某些原因,你的 Grub 不是进入正常模式而是进入命令行模式

举个栗子,Windows 10 跨大版本更新,或者你重装了 Windows,覆盖了 UEFI 设置;

1.2 处于某些特定原因,你的 Grub 进入了 Grub Rescue 模式

再举个栗子,你把 deepin 分区前部空间进行了调整,导致分区编号的改变;

1.3 这篇教程讨论 deepin UEFI 启动项丢失的问题

其实对于这个你在 BIOS 调一下或者 EasyUEFI 就能解决。

好了,接下来就是

 

2. 教程正文

2.1 找到 deepin 所在的磁盘分区

在“>”后面,输入

ls

回车。

你会看到像下面这样罗列的分区编号:

(hd0,1),(hd0,2),(hd0,3),(hd1,1),(hd1,2)……

当然也有可能是:

(hd0,gpt1),(hd0,gpt2),(hd1,gpt1)……

因人而异嘛~

然后,你就要看看哪个是 deepin 的分区了。

你在安装的时候,应该知道主分区的文件系统——多半是 ext4 。

用下面的命令,一个一个去试:

ls (hd_,_)
或
ls (hd_,gpt_)

把横线上的数据替换成你要尝试的分区编号

如果,命令行这么说:

The filesystem is unknown.

那么你就换一个分区再试,直到:

The filesystem is ext4. (或者其他你安装 deepin 的设定的文件系统)

那你就找到了 deepin 的分区。但是——

“如果我给 /boot 单独分了区怎么办?”

问得好,确实有这样的情况存在。

因此,光从文件系统来看,确实有局限性。如果你的电脑中还有其他 Linux 系统,你就算 ls 出 Grub 目录下的文件也不一定能看出门道来。

So,保险起见,你可以用 Live 镜像制作一个临场 USB(这里不加赘述),查看 deepin(或者 /boot 单独的)分区编号,以 /dev/sda5 为例

把“a”看作 0(如果是“b”就看作 1,以此类推),得出 Grub 中的分区编号为:(hd0,5)(下文省略 gpt 写法)。

 

2.2 关联 Grub 目录和 EFI 启动分区

还是拿  (hd0,5) 举例子。

 

2.2.1 情况一:你没有把 /boot 重新分区(你就是直接就那样装上了)

简单,找到 deepin 分区之后,执行:

set root=(hd0,5)
set prefix=(hd0,5)/boot/grub

这两条命令。

 

2.2.2 情况二:你愣是把 /boot 又单独分了个区

好吧,假设 (hd0,5) 就是 /boot 分区,执行:

set root=(hd0,5)
set prefix=(hd0,5)/grub

这样两条命令。

 

2.3 进入常规启动模式

/boot 没分区,你就:

insmod /boot/grub/normal.mod
或
insmod normal

/boot 分区了,你就:

insmod /grub/normal.mod
或
insmod normal

在我的电脑上,执行这一步后,硬盘灯会闪一下,“grub>”会变亮一些)

然后关键的一步,执行:

normal

然后你就看见了——

(图像来源:https://www.cnblogs.com/1328497946TS/p/11610840.html)

 

这时候的你——

但是不要高兴得太早,因为这只是临时的操作,并不能永久修复。

如果不进行下一步操作,下一次等待你的还是命令行~

赶紧选择 deepin 启动,然后

 

2.4 重新配置 Grub

打开终端,执行:

sudo update-grub
sudo grub-install /dev/sda

这里,sda 是 EFI 分区所在的硬盘号,因机器而异。不要指定具体分区!

如果上一步没有报错(No error reported.),那么就再来一次:

sudo update-grub

以防万一嘛~

“万一还是命令行,怎么破?”

啊,这种小概率事件,我还真遇到过一次——

那就只能再次执行 2.1~2.3,重装 Grub 了。可以参考这篇博文

 

好了,本期教程就到这里。

如果“小白教程”系列对你有所帮助,欢迎大家收藏或者跟帖评论。

我是 Ving 哥,我们下期再见~

 

参考资料:
https://zhidao.baidu.com/question/368384875696974604.html
https://www.zhihu.com/question/368951215
https://www.cnblogs.com/1328497946TS/p/11610840.html
https://www.cnblogs.com/gaochaoweino/p/10277172.html
如需转载本帖,标注我的 ID 就行,可以不用让我知道~
Reply Favorite View the author
Comments
poster avatar
符华
2021-01-22 00:17
好活
All Replies
2 / 2
To page
jiutian123
deepin
2022-01-15 03:54
#21

IMG_20220114_192933.jpg这样的对不对?

Reply View the author
晚秋(lateautumn)
Moderator
2022-08-25 07:14
#22

我这个小白,是似懂非懂!必须得实际操作才会真懂!joy

Reply View the author
jjcui8595
Moderator
2022-08-25 14:25
#23

深度好帖

Reply View the author
xuqi
deepin testing team
2022-09-16 00:12
#24

like

Reply View the author
2 / 2
To page