如何在 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 的“菜单项”?的主要内容,如果未能解决你的问题,请参考以下文章

linux查看一个文件是啥类型的文件

Shell常用命令与vim编辑命令

列出/etc目录下的所有文件命令

如何在Linux的命令行中使用Evernote

如何在 Linux 命令行中按大小对文件进行排序

Docker Engine在Centos下的安装