on  It Road.com

/etc/default/grub 文件

生成 grub.cfg 时,GRUB 2 菜单配置设置取自 /etc/default/grub。
下面列出了 /etc/default/grub 文件的内容:

# cat /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="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

如果对这些参数中的任何一个进行了更改,则需要运行 grub2-mkconfig 以重新生成 /boot/grub2/grub.cfg 文件。
例如:

# grub2-mkconfig –o /boot/grub2/grub.cfg

值描述如下:
GRUB_TIMEOUT :显示菜单后启动默认条目的时间(以秒为单位),除非按下某个键。
默认值为 5.
设置为 0 以立即启动而不显示菜单,或者设置为 -1 以无限期等待。

GRUB_DISTRIBUTOR:由 GRUB 的分销商设置,用于生成信息更丰富的菜单项标题。
该示例评估 CentOS Linux 服务器。

GRUB_DEFAULT 要引导的默认菜单项。
值为 0 启动第一个菜单项。
值为 1 启动第二个菜单项。
保存的值指示 GRUB 2 加载上次成功加载的操作系统。

GRUB_DEFAULT 值saved 还允许我们使用grub2-set-default 和grub2-reboot 命令来指定默认条目。
这两个命令描述如下:
grub2-set-default :为所有后续重启设置默认条目
grub2-reboot :仅为下次重新启动设置默认条目

例如,使用 GRUB_DEFAULT=saved ,以下命令将所有后续重启的默认条目设置为第二个菜单条目:

# grub2-set-default 1

GRUB_DISABLE_SUBMENU :默认情况下,grub2-mkconfig 命令为具有最高版本号的内核生成顶级菜单条目,并将所有其他找到的内核或者用于恢复模式的替代菜单条目放在子菜单中。
设置 GRUB_DISABLE_SUBMENU=true 禁用此功能。

GRUB_TERMINAL_OUTPUT :终端输出设备。
指定多个设备时,用空格分隔有效的终端输出名称。

GRUB_CMDLINE_LINUX :内核引导参数。
下一张幻灯片提供了有关内核引导参数的更多信息。

GRUB_DISABLE_RECOVERY :默认情况下,为每个 Linux 内核生成两个菜单条目:一个默认条目和一个用于恢复模式的条目。
设置 GRUB_DISABLE_RECOVERY="true" 会禁用此功能。

GRUB2 配置文件 /boot/grub2/grub.cfg

启动 RHEL 7 GRUB 2 是引导加载程序。
GRUB 2 配置文件是 /boot/grub2/grub.cfg 。

/etc/grub2.cfg 文件是 /boot/grub2/grub.cfg 的符号链接。

不要直接编辑这个文件。
使用 grub2-mkconfig 命令生成 grub.cfg。
此命令在生成 grub.cfg 时使用 /etc/grub.d 中的模板脚本和从 /etc/default/grub 获取的菜单配置设置。

下面是一个示例 GRUB2 配置文件。

..... 
### BEGIN /etc/grub.d/10_linux ###
menuentry 'CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.el7.x86_64-advanced-10bac86a-a9be-478c-b63f-46d3ca061e03' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos
	insmod xfs
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  a52207e4-01fd-4f12-98b7-681d56f21dc5
	else
	  search --no-floppy --fs-uuid --set=root a52207e4-01fd-4f12-98b7-681d56f21dc5
	fi
	linux16 /vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/cl-root ro crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet LANG=en_US.UTF-8
	initrd16 /initramfs-3.10.0-514.el7.x86_64.img
}
menuentry 'CentOS Linux (0-rescue-9cdb9ab3246a4b3f9c0849ecd597f25e) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-9cdb9ab3246a4b3f9c0849ecd597f25e-advanced-10bac86a-a9be-478c-b63f-46d3ca061e03' {
	load_video
	insmod gzio
	insmod part_msdos
	insmod xfs
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  a52207e4-01fd-4f12-98b7-681d56f21dc5
	else
	  search --no-floppy --fs-uuid --set=root a52207e4-01fd-4f12-98b7-681d56f21dc5
	fi
	linux16 /vmlinuz-0-rescue-9cdb9ab3246a4b3f9c0849ecd597f25e root=/dev/mapper/cl-root ro crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet
	initrd16 /initramfs-0-rescue-9cdb9ab3246a4b3f9c0849ecd597f25e.img
}
.......
CentOS/RHEL 7 : GRUB2 配置文件 /boot/grub2/grub.cfg

菜单项解释

GRUB 2 配置文件 /boot/grub2/grub.cfg 包含 menuentry 节,代表已安装的 Linux 内核。
每个节都以带有选项的 menuentry 关键字开始。
每个菜单项也是 GRUB 2 菜单中的一个引导菜单项。
相关的代码块用大括号 { } 括起来。

该节包括一个 linux16 指令,后跟内核路径和一个 initrd16 指令,后跟 initramfs 镜像的路径。
linux16 指令指定要引导的内核版本号以及内核引导参数。
创建了一个单独的 /boot 分区;因此,内核(以及 initramfs 镜像)的路径与 /boot 相关。

initrd16 指令必须指向与相同内核版本对应的 initramfs 文件的位置。
换句话说,linux16 /vmlinuz-[kernel_version] 行中给出的内核必须与每个节的 initrd16 /initramfs-[kernel_version].img 行中给出的 initramfs 镜像的版本号相匹配。

日期:2020-09-17 00:12:51 来源:oir作者:oir