如何永久更改 Grub 2 默认值?

如何永久更改 Grub 2 默认值?

Fedora 现在使用 Grub 2。每当它进行内核升级时,它都会丢失我的默认启动选项 (Windows)。我怎样才能解决这个问题?

答案1

我不确定是否有任何与此问题相关的更改/grubby改进anaconda。有没有人尝试遵循 fedora wiki 页面中的这些准则:

然而,下次使用 anaconda 升级系统时,手动更改可能会被 grub2-mkconfig 覆盖。一些自定义可以放置在 /etc/grubd/40_custom 或 /boot/grub2/custom.cfg 中,并且在运行 grub2-mkconfig 时仍然有效。

否则,具体可以在上述文件中放置哪些内容在内核升级和/或运行中幸存下来grub2-mkconfig

这是取自Fedora 的 Grub 维基页面:

由于 grub2-mkconfig (和 os-prober),我们无法预测 /boot/grub2/grub.cfg 中条目的顺序,因此我们通过名称/标题设置默认值。

打开 /etc/default/grub 并确保此行存在:

GRUB_DEFAULT=saved

通过运行以下命令将更改应用到 grub.cfg:

grub2-mkconfig -o /boot/grub2/grub.cfg

现在列出所有可能的菜单项

grep "submenu\|^\smenuentry" /boot/grub2/grub.cfg | cut -d "'" -f2

现在设置所需的默认菜单项

grub2-set-default "<submenu title>><menu entry title>"

验证默认菜单项

grub2-editenv list

答案2

您目前在 Fedora 中不能将此设置永久默认。

如果kernel正在更新grubby软件,则用于添加 Grub2 菜单项。而且绝对不重视/etc/default

引文来自费多拉维基:

Fedora 中的 Grubby 会在执行内核更新时修补配置,并且会尝试不进行任何必要的更改。

顺便说一句,kernel更新后我会package-cleanup --oldkernels --count=1删除grub2-mkconfig -o /boot/grub2/grub.cfg旧内核。

答案3

我不使用 Fedora,并且我不能 100% 确定这些更改是否是永久性的(在内核升级之后),但我认为您需要编辑该文件/etc/default/grub。在第 6 行,您将看到:

GRUB_DEFAULT="0"

其中 0 是 grub 列表的第一个条目。按照您想要的方式编辑它。然后,运行sudo update-grub2.

答案4

Fedora 已经发生了变化,至少在 UEFI 系统上是这样。这部分描述于https://systemd.io/BOOT_LOADER_SPECIFICATION/

要启动的 Linux 内核列表是从 /boot/loader/entries/*.conf 收集的(注意:这不在 ESP 内。)

如果您采用这些文件之一的名称,不带目录路径且不带 .conf,则可以在如下命令中使用它:

  sudo grub2-set-default 2733f1c892a5422c98bdb188c4f62737-5.10.9-201.fc33.x86_64

这对我有用。我不知道结果有多粘。

注意:如果您尝试默认使用旧内核,您可能需要确保它不会被更新删除。将 /etc/dnf/dnf.conf 中的 installonly_limit 更改为 0。

相关内容