如何在 Centos-8 的命令行中列出和编辑 GRUB2 的 "menuentry"?

How to list and edit GRUB2's "menuentry" in command-line under Centos-8?

如何在Centos-8 的命令行中列出GRUB2 的“菜单项”? 使用的可行方法 "fgrep menuentry /etc/grub2.conf" 失败。

因为在 Centos-8/RHEL-8,他们不在 /etc/grub2.conf 中存储菜单项。 相反,他们在引导运行时搜索和构建条目。

以及如何将自定义 cmdline 参数添加到特殊菜单项? /etc/grub2.conf 中没有菜单项,我无法编辑任何菜单项。

RHEL/CentOS8 中的 Grub 菜单条目由各种文件和脚本组合而成,因此我们不会像以前版本的操作系统那样看到静态条目。 (可以看到位于/boot/loader/entries/目录下的un-expanded启动项配置文件)

要查看默认菜单项,您可以使用:

grubby --info DEFAULT

要查看所有菜单条目,您可以使用:

grubby --info ALL

后者还为我们提供了每个可能有用的条目的相应索引。例如,下面将列出第 3 个条目的条目详细信息:

grubby --info 2

要自定义特定条目,您可以通过引用索引来实现:

grubby --args amd_iommu=on --update-kernel 2

或者简单地使用当前内核的内核版本如下:

grubby --args amd_iommu=on --update-kernel=/boot/vmlinuz-$(uname -r) 

对条目进行修改后,选项应展开并列在 /boot/loader/entries/ 中相应的条目文件中(否则您将看到变量)。

遗憾的是,grubby 不会列出您添加到 /boot/grub2/custom.cfg(由 /etc/grub.d/41_custom 加载)的菜单项。我不确定它是否会包含在 /etc/grub.d/40_custom 中加载的条目。

我通过编译 grub2-emu 和 运行 成功地看到了 grub 的菜单项:

https://github.com/Jolicloud/grub2/blob/master/util/grub-emu.c

它在某些存储库中作为 grub-emu 或 grub2-emu 包提供。它向您展示了 grub 菜单的模拟,就像它在引导时出现的那样。