• [转载][新手教程] 【小白教程】第一期:谁动了我的Grub?——Grub 修复


    作者deepin论坛ID:我是 Ving 哥 原帖地址:https://bbs.deepin.org/post/210805

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

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

    Hello,大家好,我是 Ving 哥~

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

    让我们设想这样的情景:

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

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

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

    首先我们要知道的是——

    1. 本篇教程的适用范围

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

    举个栗子,Windows 10 跨大版本更新,覆盖了 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 哥,我们下期再见~

    下期预告:

    【PPT SHOW】第十三期:深度应用商店怎么设计才好看?

    【小白教程】第二期:待定~

    参考资料:
    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 就行,可以不用让我知道~
  • 相关阅读:
    Chapter 4 持久存储数据对象
    pyhton Chapter3 读文件
    python笔记1
    C#读写txt文件
    机器学习第一讲
    Json对象
    表单加载
    多列树
    Java 基础【11】@注解
    Java 基础【06】复合赋值运算
  • 原文地址:https://www.cnblogs.com/leizhang/p/14310495.html
Copyright © 2020-2023  润新知