Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

26.4. 使用 grubby 工具对 GRUB 2 菜单进行持久更改

grubby 工具可用于从 grub.cfg 文件读取信息,并对该文件进行永久性更改。例如,它启用更改 GRUB 2 菜单条目以指定要在系统启动时传递给内核并更改默认内核的参数。

在 Red Hat Enterprise Linux 7 中,如果手动调用 grubby 而无需指定 GRUB 2 配置文件,则默认搜索 /etc/grub2.cfg,这是指向 grub.cfg 文件的符号链接,该文件的位置取决于架构。如果找不到该文件,它将搜索依赖于默认架构的架构。

列出默认内核

要找出默认内核的文件名,请按如下所示输入命令:

~]# grubby --default-kernel
/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64

要找出默认内核的索引号,请按如下所示输入命令:

~]# grubby --default-index
0

更改默认引导条目

要在指定为默认内核的内核中进行持久更改,请使用 grubby 命令,如下所示:

~]# grubby --set-default /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64

查看内核的 GRUB 2 菜单条目

要列出所有内核菜单条目,请按如下所示输入命令:

~]$ grubby --info=ALL

在 UEFI 系统中,所有 grubby 命令必须以 root 身份输入。

要查看特定内核的 GRUB 2 菜单条目,请输入以下命令:

~]$ grubby --info /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rhgb quiet LANG=en_US.UTF-8"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)

尝试 Tab 补全以查看 /boot/ 目录中的可用内核。

从 GRUB 2 菜单条目中添加和删除参数

当与 -- args 结合使用时,可以使用 -- update-kernel 选项更新菜单条目,以添加新参数和 --remove-arguments 以删除现有参数。这些选项接受带引号的空格分隔列表。从 GRUB 2 菜单条目同时添加和删除参数的命令具有以下格式:

grubby --remove-args="argX argY" --args="argA argB" --update-kernel /boot/kernel

要从内核的 GRUB 2 菜单条目中添加和删除参数,请使用以下命令:

~]# grubby --remove-args="rhgb quiet" --args=console=ttyS0,115200 --update-kernel /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64

该命令将删除 Red Hat 图形引导参数,启用看到引导消息,并添加串行控制台。由于控制台参数将在行末尾添加,因此新控制台的优先级将高于配置的任何其他控制台。

要查看更改,请使用 --info 命令选项,如下所示:

~]# grubby --info /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us LANG=en_US.UTF-8 ttyS0,115200"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)

使用相同参数更新所有内核菜单

要在所有内核菜单条目中添加相同的内核引导参数,请输入以下命令:

~]# grubby --update-kernel=ALL --args=console=ttyS0,115200

--update-kernel 参数还接受 DEFAULT 或以逗号分隔的内核索引号列表。

更改内核参数

要更改现有内核参数中的值,请再次指定 参数,根据需要更改值。例如,要更改虚拟控制台字体大小,使用以下命令:

~]# grubby --args=vconsole.font=latarcyrheb-sun32 --update-kernel /boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
index=0
kernel=/boot/vmlinuz-3.10.0-229.4.2.el7.x86_64
args="ro rd.lvm.lv=rhel/root crashkernel=auto rd.lvm.lv=rhel/swap vconsole.font=latarcyrheb-sun32 vconsole.keymap=us LANG=en_US.UTF-8"
root=/dev/mapper/rhel-root
initrd=/boot/initramfs-3.10.0-229.4.2.el7.x86_64.img
title=Red Hat Enterprise Linux Server (3.10.0-229.4.2.el7.x86_64) 7.0 (Maipo)

有关更多命令选项,请参阅 grubby(8)手册页