Linux-开机引导grub简介及设置
前言
GRUB 来自 GRand Unified Bootloader 的缩写。它的功能是在启动时从 BIOS 接管掌控、加载自身、加载 Linux 内核到内存,然后再把执行权交给内核。一旦内核开始掌控,GRUB 就完成了它的任务,也就不再需要了。在CentOS7以及其他比较新的Linux发行版本中,默认都采用了grub2进行引导。
grub2
grub.cfg 文件是 GRUB 配置文件。它由 grub2-mkconfig 命令根据用户的配置使用一组主配置文件以及 grub 默认文件而生成。/boot/grub2/grub.cfg 文件在 Linux 安装时会初次生成,安装新内核时又会重新生成。
grub.cfg可以手动编辑,但是一般不会去编辑,可能出现不可预知的错误。如果需要修改或者添加grub.cfg启动项配置,可以选择编辑它的配置文件,在/etc/grub.d/这个目录下。如果是跟grub本身相关属性的设置可以在 /etc/default/grub里面编辑。
/etc/default/grub的相关配置项
GRUB_TIMEOUT 这个键的值决定了显示 GRUB 选择菜单的时间长度。GRUB 提供了同时保存多个安装内核并在启动时使用 GRUB 菜单在其中选择的功能。这个键的默认值是 5 秒,但我通常修改为 10 秒使得有更多时间查看选项并作出选择。
GRUB_DISTRIBUTOR 这个键定义了一个从 /etc/system-release 文件中提取发行版本的 sed 表达式。这个信息用于生成出现在 GRUB 菜单中的每个内核发布版的文本名称,例如 “CentOS Linux” 等。由于不同发行版之间 system-release 文件结构的差异,在你的系统中这个 sed 表达式可能有些不同。
GRUB_DEFAULT 决定默认引导哪个内核。如果是 saved,这代表最新内核。这里的其它选项如果是数字则代表了 grub.cfg 中列表的索引。使用索引号 1,就会总是加载列表中的第二个内核,即使安装了一个新内核之后也是。因此使用索引数字的话,在安装一个新内核后会加载不同的内核。要确保引导特定内核版本的唯一方法是设置 GRUB_DEFAULT 的值为想要内核的名称,例如 4.18.9-1-MANJARO。
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 选项
安装grub并生成grub.cfg文件
grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg