第 26 章 使用 GRUB 2
Red Hat Enterprise Linux 7 带有 GNU GRand Unified Bootloader(GRUB 2)版本 2,允许用户选择在系统启动时载入的操作系统或内核。GRUB 2 还允许用户向内核传递参数。
26.1. GRUB 2 简介 复制链接链接已复制到粘贴板!
GRUB 2 从基于 BIOS 的传统机器上的 /boot/grub2/grub.cfg 文件中读取其配置,以及 UEFI 计算机上的 /boot/efi/EFI/redhat/grub.cfg 文件。此文件包含菜单信息。
GRUB 2 配置文件 grub.cfg 在安装 期间或通过调用 /usr/sbin/grub2-mkconfig 实用程序生成,每次安装新内核时,RUB by 会自动更新该文件。使用 grub2-mkconfig 手动 生成时,文件会根据 /etc/grub.d/ 中的模板文件生成,以及 /etc/default/grub 文件中的自定义设置。当使用 grub2-mkconfig 重新生成文件时,grub.cfg 的编辑都将丢失,因此还必须小心反映 /etc/default/grub 中的任何手动更改。
grub.cfg 上的常规操作(例如删除和添加新内核)应使用 grubby 工具执行;对于脚本,应使用 new-kernel-pkg 工具执行。如果您使用 grubby 修改默认内核,则安装新内核时将继承更改。有关 grubby 的更多信息,请参阅 第 26.4 节 “使用 grubby 工具对 GRUB 2 菜单进行持久更改”。
grub2-mkconfig 工具使用 /etc/default/grub 文件,该工具供 anaconda 在安装过程中创建 grub.cfg 使用;出现故障时,例如需要重新创建启动加载器配置时,可以使用该文件。通常,不建议手动运行 grub 文件,除非作为最后的手段。请注意,对 2-mkconfig 来替换 grub.cfg/etc/default/grub 的任何手动更改都需要重建 grub.cfg 文件。
grub.cfg 中的菜单条目
在各种代码片段和指令中,grub .cfg 配置文件包含一个或多个 菜单输入 块,各自代表单个 GRUB 2 引导菜单条目。这些块始终以 menuentry 关键字开头,后跟标题、选项列表和打开大括号,最后是右花括号。打开和关闭括号之间的任何内容都应缩进。例如,以下是带有 Linux 内核 3.8.0-0.40.el7.x86_64 的 Red Hat Enterprise Linux 7 的菜单输入 块示例:
代表安装的 Linux 内核的每个 菜单输入 块包含 64 位 IBM POWER 系列 中的 linux、x86_64 基于 BIOS 的系统中 。然后,init linux16,以及基于 UEFI 的系统上的 linuxefird 指令加上到内核的路径和 initramfs 镜像。如果创建了单独的 /boot 分区,到内核和 initramfs 镜像 的路径相对于 /boot。在上例中,init rd /initramfs-3.8.0-0.40.el7.x86_64.img 行表示 initramfs 映像实际位于 /boot/initramfs-3.8.0-0.40.el7.x86_64.img (在 根 文件系统挂载时)。
linux16 /vmlinuz-kernel_version 行上提供的内核版本号必须与每个 菜单条目块 的 initrd /initramfs-kernel_version.img 行中给出的 initramfs 映像的版本号匹配。有关如何验证初始 RAM 磁盘镜像的更多信息,请参阅 Red Hat Enterprise 7 内核管理指南。
在 菜单条目 块中,init rd 指令必须指向 initramfs 文件与同一内核版本对应的 initramfs 文件的位置(相对于 /boot/ 目录)。此指令称为 initrd,因为之前的工具创建了初始 RAM 磁盘镜像 mkinitrd,它创建了所谓的 initrd 文件。grub.cfg 指令保留 initrd,以保持与其他工具的兼容性。使用 dracut 实用程序创建初始 RAM 磁盘映像的系统文件算法是 initramfs-kernel_version.img。
有关使用 Dracut 的详情,请参考 Red Hat Enterprise 7 内核管理指南。