linux的grub界面怎么打开(LinuxGRUB2配置简介)(1)

学习 GRUB 引导加载程序是如何预备你的系统并启动操作系统内核的。 -- David Both

本文导航
  • -GRUB …… 03%

  • -GRUB 菜单 …… 10%

  • -grub.cfg 文件 …… 16%

  • -GRUB 配置文件 …… 21%

  • -GRUB 默认文件 …… 31%

  • -生成 grub.cfg …… 69%

  • -问题 …… 75%

  • -总结 …… 83%

编译自: https://opensource.com/article/17/3/introduction-grub2-configuration-Linux

作者: David Both

译者: ictlyh

学习 GRUB 引导加载程序是如何预备你的系统并启动操作系统内核的。

自从上个月为我的文章《Linux 引导和启动过程简介[1]》做研究开始,我对更深入了解 GRUB2 产生了兴趣。这篇文章提供了配置 GRUB2 的简要介绍。为了简便起见,我大多数情况下会使用 GRUB 指代 GRUB2。

GRUB

GRUB 来自 GRand Unified Bootloader 的缩写。它的功能是在启动时从 BIOS 接管掌控、加载自身、加载 Linux 内核到内存,然后再把执行权交给内核。一旦内核开始掌控,GRUB 就完成了它的任务,也就不再需要了。

  • GRUB_TIMEOUT 这个键的值决定了显示 GRUB 选择菜单的时间长度。GRUB 提供了同时保存多个安装内核并在启动时使用 GRUB 菜单在其中选择的功能。这个键的默认值是 5 秒,但我通常修改为 10 秒使得有更多时间查看选项并作出选择。

  • GRUB_DISTRIBUTOR 这个键定义了一个从 /etc/system-release 文件中提取发行版本的 sed[3] 表达式。这个信息用于生成出现在 GRUB 菜单中的每个内核发布版的文本名称,例如 “Fedora” 等。由于不同发行版之间 system-release 文件结构的差异,在你的系统中这个 sed 表达式可能有些不同。

  • GRUB_DEFAULT 决定默认引导哪个内核。如果是 saved,这代表最新内核。这里的其它选项如果是数字则代表了 grub.cfg 中列表的索引。使用索引号 3,就会总是加载列表中的第四个内核,即使安装了一个新内核之后也是。因此使用索引数字的话,在安装一个新内核后会加载不同的内核。要确保引导特定内核版本的唯一方法是设置 GRUB_DEFAULT 的值为想要内核的名称,例如 4.8.13-300.fc25.x86_64。

  • GRUB_SAVEDEFAULT 通常,grub 默认文件中不会指定这个选项。当选择不同内核进行引导时,正常操作下该内核只会启动一次。默认内核不会改变。当其设置为 true 并和 GRUB_DEFAULT=saved 一起使用时,这个选项会保存一个不同内核作为默认值。当选择不同内核进行引导时会发生这种情况。

  • GRUB_DISABLE_SUBMENU 一些人可能会希望为 GRUB 菜单创建一个内核的层级菜单结构。这个键和 grub.cfg 中一些额外内核配置允许创建这样的层级结构。例如,主菜单中可能有 production 和 test 子菜单,每个子菜单中包括了一些合适的内核。设置它为 false 可以启用子菜单。

  • GRUB_TERMINAL_OUTPUT 一些环境下可能需要或者必要将输出重定向到一个不同的显示控制台或者终端。默认情况下是把输出发送到默认终端,通常 console 等价于 Intel 系列个人电脑的标准输出。另一个有用的选择是在使用串行终端或者 Integrated Lights Out (ILO) 终端连接的数据中心或者实验室环境中指定 serial。

  • GRUB_TERMINAL_INPUT 和 GRUB_TERMINAL_OUTPUT 类似,可能需要或者必要重定向输入为串行终端或者 ILO 设备、而不是标准键盘输入。

  • GRUB_CMDLINE_LINUX 这个键包括了在启动时会传递给内核的命令行参数。注意这些参数会被添加到 grub.cfg 所有已安装内核的内核行。这意味着所有已安装的内核在启动时都会有相同的参数。我通常删除 rhgb 和 quiet 参数以便我可以看到引导和启动时内核和 systemd 输出的所有内核信息消息。

  • GRUB_DISABLE_RECOVERY 当这个键的值被设置为 false,GRUB 菜单中就会为每个已安装的内核创建一个恢复条目。当设置为 true 时就不会创建任何恢复条目。但不管这个设置怎样,最后的内核条目总是一个 rescue 选项。不过在 rescue 选项中我遇到了一个问题,下面我会详细介绍。

  • 还有一些你可能觉得有用但我没有在这里介绍的键。它们的描述可以在 GRUB 手册 2[4] 的 5.1 章节找到。

    生成 grub.cfg

    完成所需的配置之后,就需要生成 /boot/grub2/grub.cfg 文件。这通过下面的命令完成。

    grub2-mkconfig > /boot/grub2/grub.cfg

    这个命令按照顺序使用位于 /etc/grub.d 的配置文件构建 grub.cfg 文件,然后使用 grub 默认文件的内容修改输出以便获得最终所需的配置。grub2-mkconfig 命令会尝试定位所有已安装的内核并在 grub.cfg 文件的 10_Linux 部分新建条目。它还创建一个 rescue 条目提供一个用于从 Linux 不能启动的严重问题中恢复的方法。

    强烈建议你不要手动编辑 grub.cfg 文件,因为任何对该文件的直接修改都会在下一次安装新内核或者手动运行 grub2-mkconfig 时被重写。

    问题

    我遇到一个如果没有意识到就可能导致严重后果的 GRUB2 问题。这个救援内核没有启动,反而启动了另外一个内核。我发现那是列表中索引为 1 的内核,也就是列表中的第二个内核。额外的测试发现不管使用原始的还是我生成的 grub.cfg 配置文件都会发生这个问题。我在虚拟机和真实硬件上都尝试过而且都发生了这个问题。我只测试了 Fedora 25,因此其它 Fedora 发行版本可能没有这个问题。

    注意,从救援内核生成的 “recovery” 内核条目不能引导到维护模式。

    我推荐将 grub 默认文件中 GRUB_DISABLE_RECOVERY 的值更改为 “false”,然后生成你自己的 grub.cfg。这会在 GRUB 菜单中为每个已安装的内核生成可用的恢复条目。这些恢复配置能像期望那样工作,从而从那些需要输入密码登录的内核条目中引导到运行级别 1,也就是进入(不需要密码的)单用户维护模式。你也可以按 Ctrl-D 继续正常的引导进入默认运行级别。

    总结

    GRUB 是引导 Linux 计算机到可用状态过程的一系列事件中,发生在 BIOS 之后的第一步。理解如何配置 GRUB 对于恢复或者处理多种类型的问题非常重要。

    这么多年来我多次不得不引导到恢复或者救援模式以便解决多种类型的问题。其中的一些问题确实是类似 /etc/fstab 或其它配置文件中不恰当条目导致的引导问题,也有一些是由于应用程序或者系统软件和最新的内核不兼容的问题。硬件兼容性问题也可能妨碍特定的内核启动。

    我希望这些信息能对你开启 GRUB 配置之旅有所帮助。

    ( 题图 : Internet Archive Book[5] Images[6]. Opensource.com 修改。 CC BY-SA 4.0)


    作者简介:

    David Both - David Both 是一个居住在 Raleigh,北卡罗来纳州的 Linux 和开源倡导者。他在 IT 界已经有超过 40 年,并在他工作的 IBM 执教 OS/2 20 多年。在 IBM 的时候,他在 1981 年开设了第一个最初 IBM 个人电脑的培训课程。他在红帽教授过 RHCE 课程并在 MCI Worldcom、 Cisco、 和北卡罗来纳州工作过。他已经在 Linux 和开源软件方面工作将近 20 年。


    via: https://opensource.com/article/17/3/introduction-grub2-configuration-linux

    作者:David Both[7] 译者:ictlyh 校对:wxy

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    • [1]: Linux 引导和启动过程简介 - https://opensource.com/article/17/2/linux-boot-and-startup

    • [2]: GRUB 手册 5.1 章节 - https://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

    • [3]: sed - https://en.wikipedia.org/wiki/Sed

    • [4]: GRUB 手册 2 - https://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

    • [5]: Book - https://www.flickr.com/photos/internetarchivebookimages/14746482994/in/photolist-ot6zCN-odgbDq-orm48o-otifuv-otdyWa-ouDjnZ-otGT2L-odYVqY-otmff7-otGamG-otnmSg-rxnhoq-orTmKf-otUn6k-otBg1e-Gm6FEf-x4Fh64-otUcGR-wcXsxg-tLTN9R-otrWYV-otnyUE-iaaBKz-ovcPPi-ovokCg-ov4pwM-x8Tdf1-hT5mYr-otb75b-8Zk6XR-vtefQ7-vtehjQ-xhhN9r-vdXhWm-xFBgtQ-vdXdJU-vvTH6R-uyG5rH-vuZChC-xhhGii-vvU5Uv-vvTNpB-vvxqsV-xyN2Ai-vdXcFw-vdXuNC-wBMhes-xxYmxu-vdXxwS-vvU8Zt

    • [6]: Images - https://www.flickr.com/photos/internetarchivebookimages/14774719031/in/photolist-ovAie2-otPK99-xtDX7p-tmxqWf-ow3i43-odd68o-xUPaxW-yHCtWi-wZVsrD-DExW5g-BrzB7b-CmMpC9-oy4hyF-x3UDWA-ow1m4A-x1ij7w-tBdz9a-tQMoRm-wn3tdw-oegTJz-owgrs2-rtpeX1-vNN6g9-owemNT-x3o3pX-wiJyEs-CGCC4W-owg22q-oeT71w-w6PRMn-Ds8gyR-x2Aodm-owoJQm-owtGp9-qVxppC-xM3Gw7-owgV5J-ou9WEs-wihHtF-CRmosE-uk9vB3-wiKdW6-oeGKq3-oeFS4f-x5AZtd-w6PNuv-xgkofr-wZx1gJ-EaYPED-oxCbFP

    • [7]: David Both - https://opensource.com/users/dboth

    ,