如何在 Centos-8 下的命令行中列出和编辑 GRUB2 的“菜单项”?
Posted
技术标签:
【中文标题】如何在 Centos-8 下的命令行中列出和编辑 GRUB2 的“菜单项”?【英文标题】:How to list and edit GRUB2's "menuentry" in command-line under Centos-8? 【发布时间】:2020-07-01 06:11:20 【问题描述】:如何在 Centos-8 下的命令行中列出 GRUB2 的“菜单项”? 使用的可行方法“fgrep menuentry /etc/grub2.conf”失败。
因为在 Centos-8/RHEL-8 中,他们不会将 menuentry 存储在 /etc/grub2.conf 中。 相反,它们会在启动运行时搜索并构建条目。
以及如何将自定义命令行参数添加到特殊菜单项? /etc/grub2.conf 中没有menuentry,我无法编辑任何menuentry。
【问题讨论】:
"grub2 meny entries" :/boot/grub2/grub.cfg
/etc/grub2.cfg
是/boot/grub2/grub.cfg
的符号链接,/boot/grub2/grub.cfg
中没有“菜单项”。
【参考方案1】:
RHEL/CentOS 8 中的 Grub 菜单条目由各种文件和脚本组合而成,因此我们不会像以前版本的操作系统那样看到静态条目。 (可以看到未展开的启动入口配置文件位于/boot/loader/entries/目录下)
为了查看默认菜单项,您可以使用:
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/ 的相应条目文件中(否则您将看到变量)。
【讨论】:
【参考方案2】:很遗憾,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 菜单的模拟,就像它在启动时出现的那样。
【讨论】:
以上是关于如何在 Centos-8 下的命令行中列出和编辑 GRUB2 的“菜单项”?的主要内容,如果未能解决你的问题,请参考以下文章