/etc/default/grub 文件非常简单。这个 grub 默认文件已经列出了一些有效的键值对。你可以简单地更改现有键值或者添加其它文件中还没有的键。下面的列表 1 显示了一个没有更改过的 /etc/default/grub 文件。
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g'
/etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=Fedora_fedora25vm/root
rd.lvm.lv=fedora_fedora25vm/swap
rd.lvm.lv=fedora_fedora25vm/usr rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
列表 1:Fedora 25 一个原始 grub 默认文件。
包括了所有可以添加到该 grub 文件的键的信息。我只需要修改 grub 默认文件已经有的一些键值就够了。让我们看看这些键值以及一些在 grub 默认文件中没有出现的每个键的意义。
还有一些你可能觉得有用但我没有在这里介绍的键。它们的描述可以在 的 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 Images. Opensource.com 修改。 CC BY-SA 4.0)
作者简介: