zoukankan      html  css  js  c++  java
  • [转载][新手教程] 【小白教程】第一期:谁动了我的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 就行,可以不用让我知道~
  • 相关阅读:
    深入理解计算机系统 第六章 存储器层次结构 第二遍
    深入理解计算机系统 第六章 存储器层次结构
    深入理解计算机系统 第八章 异常控制流 Part2 第二遍
    深入理解计算机系统 第八章 异常控制流 part2
    深入理解计算机系统 第八章 异常控制流 Part1 第二遍
    深入理解计算机系统 第八章 异常控制流 part1
    深入理解计算机系统 第三章 程序的机器级表示 Part2 第二遍
    深入理解计算机系统 第三章 程序的机器级表示 part2
    深入理解计算机系统 第三章 程序的机器级表示 Part1 第二遍
    深入理解计算机系统 第三章 程序的机器级表示 part1
  • 原文地址:https://www.cnblogs.com/leizhang/p/14310495.html
Copyright © 2011-2022 走看看