grub2-mkconfig 是根据 / etc/default/grub 文件来创建配置文件的。该文件中定义的是 grub 的全局宏,修改内置的宏可以快速生成 grub 配置文件。实际上在 / etc/grub.d / 目录下还有一些 grub 配置脚本,这些 shell 脚本读取一些脚本配置文件 (如 / etc/default/grub),根据指定的逻辑生成 grub 配置文件。若有兴趣,不放读一读 / etc/grub.d/10_linux 文件,它指导了创建 grub.cfg 的细节,例如如何生成启动菜单。
- [root@xuexi ~]#ls/etc/grub.d/
- 00_header 00_tuned 01_users 10_linux 20_linux_xen 20_ppc_terminfo 30_os-prober 40_custom 41_custom README
在 / etc/default/grub 中,使用 "key=vaule" 的格式,key 全部为大小字母,如果 vaule 部分包含了空格或其他特殊字符,则需要使用引号包围。
例如,下面是一个 / etc/default/grub 文件的示例:
- [root@xuexi ~]# cat /etc/default/grub
- GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=saved
- GRUB_DISABLE_SUBMENU=trueGRUB_TERMINAL_OUTPUT="console"GRUB_CMDLINE_LINUX="crashkernel=auto biosdevname=0 net.ifnames=0 rhgb quiet"GRUB_DISABLE_RECOVERY="true"
虽然可用的宏较多,但可能用的上的就几个:GRUB_DEFAULT、GRUB_TIMEOUT、GRUB_CMDLINE_LINUX 和 GRUB_CMDLINE_LINUX_DEFAULT。
以下列出了部分 key。
(1).GRUB_DEFAULT
默认的菜单项,默认值为 0。其值可为数值 N,表示从 0 开始计算的第 N 项是默认菜单,也可以指定对应的 title 表示该项为默认的菜单项。使用数值比较好,因为使用的 title 可能包含了容易改变的设备名。例如有如下菜单项:
- menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux {
- ...
- }
如果想将此菜单设为默认菜单,则可设置 "GRUB_DEFAULT=example-gnu-linux"。
如果 GRUB_DEFAULT 的值设置为 "saved",则表示默认的菜单项是 "GRUB_SAVEDEFAULT" 或 "grub-set-default" 所指定的菜单项。
(2).GRUB_SAVEDEFAULT
默认该 key 的值未设置。如果该 key 的值设置为 true 时,如果选定了某菜单项,则该菜单项将被认为是新的默认菜单项。该 key 只有在设置了 "GRUB_DEFAULT=saved" 时才有效。
不建议使用该 key,因为 GRUB_DEFAULT 配合 grub-set-default 更方便。
(3).GRUB_TIMEOUT
在开机选择菜单项的超时时间,超过该时间将使用默认的菜单项来引导对应的操作系统。默认值为 5 秒。等待过程中,按下任意按键都可以中断等待。
设置为 0 时,将不列出菜单直接使用默认的菜单项引导与之对应的操作系统,设置为 "-1" 时将永久等待选择。
是否显示菜单,和 "GRUB_TIMEOUT_STYLE" 的设置有关。
(4).GRUB_TIMEOUT_STYLE
如果该 key 未设置值或者设置的值为 "menu",则列出启动菜单项,并等待 "GRUB_TIMEOUT" 指定的超时时间。
如果设置为 "countdown" 和 "hidden",则不显示启动菜单项,而是直接等待 "GRUB_TIMEOUT" 指定的超时时间,如果超时了则启动默认菜单项并引导对应的操作系统。在等待过程中,按下 "ESC" 键可以列出启动菜单。设置为 countdown 和 hidden 的区别是 countdown 会显示超时时间的剩余时间,而 hidden 则完全隐藏超时时间。
(5).GRUB_DISTRIBUTOR
设置发行版的标识名称,一般该名称用来作为菜单的一部分,以便区分不同的操作系统。
(6).GRUB_CMDLINE_LINUX
添加到菜单中的内核启动参数。例如:
GRUB_CMDLINE_LINUX="crashkernel=ro root=/dev/sda3 biosdevname=0 net.ifnames=0 rhgb quiet"
(7).GRUB_CMDLINE_LINUX_DEFAULT
除非 "GRUB_DISABLE_RECOVERY" 设置为 "true",否则该 key 指定的默认内核启动参数将生成两份,一份是用于默认启动参数,一份用于恢复模式 (recovery mode) 的启动参数。
该 key 生成的默认内核启动参数将添加在 "GRUB_CMDLINE_LINUX" 所指定的启动参数之后。
(8).GRUB_DISABLE_RECOVERY
该项设置为 true 时,将不会生成恢复模式的菜单项。
(9).GRUB_DISABLE_LINUX_UUID
默认情况下,grub2-mkconfig 在生产菜单项的时候将使用 uuid 来标识 Linux 内核的根文件系统,即 "root=UUID=..."。
例如,下面是 / boot/grub2/grub.cfg 中某菜单项的部分内容。
menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8' {
......
linux16 /vmlinuz-3.10.0-327.el7.x86_64 root=UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 ro crashkernel=auto biosdevname=0 net.ifnames=0 quiet LANG=en_US.UTF-8
initrd16 /initramfs-3.10.0-327.el7.x86_64.img
}
虽然使用 UUID 的方式更可靠,但有时候不太方便,所以可以设置该 key 为 true 来禁用。
(10).GRUB_BACKGROUND
设置背景图片,背景图片必须是 grub 可读的,图片文件名后缀必须是 ".png"、".tga"、".jpg"、".jpeg",在需要的时候,grub 会按比例缩小图片的大小以适配屏幕大小。
(11).GRUB_THEME
设置 grub 菜单的主题。
(12).GRUB_GFXPAYLOAD_LINUX
设置为 "text" 时,将强制使用文本模式启动 Linux。在某些情况下,可能不支持图形模式。
(13).GRUB_DISABLE_OS_PROBER
默认情况下,grub2-mkconfig 会尝试使用 os-prober 程序 (如果已经安装的话,默认应该都装了) 探测其他可用的操作系统内核,并为其生成对应的启动菜单项。设置为 "true" 将禁用自动探测功能。
(14).GRUB_DISABLE_SUBMENU
默认情况下,grub2-mkconfig 如果发现有多个同版本的或低版本的内核时,将只为最高版本的内核生成顶级菜单,其他所有的低版本内核菜单都放入子菜单中,设置为 "y" 将全部生成为顶级菜单。
(15).GRUB_HIDDEN_TIMEOUT(已废弃,但为了向后兼容,仍有效)
使用 "GRUB_TIMEOUT_STYLE={countdown|hidden}" 替代该项
(16).GRUB_HIDDEN_TIMEOUT_QUIET(已废弃,但为了向后兼容,仍有效)
配合 GRUB_HIDDEN_TIMEOUT 使用,可以使用 GRUB_TIMEOUT_STYLE=countdown 来替代这两项。
来源: http://www.cnblogs.com/f-ck-need-u/p/7094693.html