在 RHEL 7 和 8 中我一直这样做:
/etc/default/grub
GRUB_CMDLINE_LINUX=... verbose
并移除rhgb quiet
然后执行grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
这不会对 RHEL 9 产生影响。现在在 RHEL 9 中执行此操作的正确方法是什么?
我注意到grub.cfg
现在位于/boot/
RHEL,并且我尝试了-o
选项中的该位置但仍然不起作用。
在 RHEL 7 和 8 中我一直这样做:
/etc/default/grub
GRUB_CMDLINE_LINUX=... verbose
并移除rhgb quiet
然后执行grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
这不会对 RHEL 9 产生影响。现在在 RHEL 9 中执行此操作的正确方法是什么?
我注意到grub.cfg
现在位于/boot/
RHEL,并且我尝试了-o
选项中的该位置但仍然不起作用。
您错过了从 RHEL 8 开始的更改。
不应该有
/boot/grub.cfg
,但肯定有/boot/grub2/grub.cfg
,因为后者应该被重写grub2-mkconfig
——即使在 RHEL9 中的 UEFI 系统中也是如此。除非有人已经用
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
命令重写了它,否则在 RHEL 9 中/boot/efi/EFI/redhat/grub.cfg
应该只有几行告诉 GRUB 如何找到其配置目录/boot/grub2/
及其中的主配置文件,如下所示:/boot
如果包含的文件系统位于 LVM 逻辑卷或软件 RAID 集上、加密或以 GRUB 现在可以处理的其他方式进行特殊处理,则可能会多出一行或两行。如果/boot
它是根文件系统的一部分,而不是其自己的单独文件系统,则该set prefix
行将改为set prefix=($dev)/boot/grub2
。在 RHEL9 中,无论系统使用 BIOS 还是 UEFI,主菜单
grub.cfg
都再次位于古老的标准位置。/boot/grub2/grub.cfg
但由于它现在符合BootLoaderSpec,因此在 RHEL8 和 RHEL9 中,内核启动选项现在应该位于文件
kernelopts=
中定义的变量中/boot/grub2/grubenv
。主 GRUB 配置文件仅保存kernelopts=
变量的后备值,以防grubenv
文件丢失。如果您已经覆盖了 中的迷你配置
/boot/efi/EFI/redhat/grub.cfg
,那么 GRUB 将不再有机会加载,并且它将恢复为根据中的变量/boot/grub2/grubenv
构建的默认启动选项。GRUB_CMDLINE_LINUX_DEFAULT
/etc/default/grub
要自动将覆盖的微配置恢复
/boot/efi/EFI/redhat/grub.cfg
为标准,RHEL 文档推荐的方法是:RHEL9文档的相关部分甚至有这样的警告:
在 RHEL9 中运行
grub2-mkconfig -o /boot/grub2/grub.cfg
也应该更新文件中的内核启动参数/boot/grub2/grubenv
,除非您使用--no-grubenv-update
...特别禁止它,或者仍然受到 RHEL 9.0 中存在但已被 9.1 修复的错误的影响。如果您仍然受到该错误的影响,则运行一次修复版本
grub2-mkconfig
就应该可以修复它。RedHat 记录了您最初想要修改内核选项的方法(假设迷你配置
/boot/efi/EFI/redhat/grub.cfg
没有被覆盖)如下:这些命令适用于 RHEL 8 和 RHEL 9。
如果您修改了
GRUB_CMDLINE_LINUX_DEFAULT
变量/etc/default/grub
或添加了类似的内容,例如基于 SSH 的 iLO/iDRAC/ILOM 登录会话支持:那么您必须做一个
grub2-mkconfig -o /boot/grub2/grub.cfg
- 是的,在 RHEL9 中,它正是 BIOS和 UEFI系统上的命令。在 RHEL8 中,您仍然必须
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
在 UEFI 系统上执行操作。