在 Fedora 31 中处理默认 kernelopts 的正确方法是什么?

在 Fedora 31 中处理默认 kernelopts 的正确方法是什么?

我正在运行 Fedora 31,当我安装它时 (F29),我将该选项添加mem_sleep_default=deepGRUB_CMDLINE_LINUX_DEFAULT/etc/default/grub.现在我想删除该选项,但发现了这样的文件:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX=""
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

我记得还有很多类似rd.lvm.lvrd.luks.uuid的选项,幸运的是仍然存在,/boot/efi/EFI/fedora/grub.cfg但我在其他地方找不到它们。

我认为自从升级到 F30 或 F31 以来,情况可能会发生变化。我还注意到这GRUB_ENABLE_BLSCFG=true可能意味着现在事情的处理方式有所不同。我读到我不应该grub2-mkconfig再使用 grubby 来更改 kernelopts。但我担心失去所有我认为重要的内核优化。

那么处理这个问题的正确方法是什么?

答案1

我相信推荐的方法是使用grubby

grubby --update-kernel=ALL --args="mem_sleep_default=deep"

将给定的参数添加到内核命令行,并且

grubby --update-kernel=ALL --remove-args=mem_sleep_default

将删除它。

grubby最大限度地减少所做的更改,并且在更新内核参数时,上述内容将保留其他参数(基于用于引导当前运行的内核的参数)。

/etc/default/grub不一定是启动参数的参考文件;您应该查看 EFI 系统上的 AFAICT /boot/efi/EFI/fedora/grubenv(或者更确切地说,/boot/grub2/grubenv)。

GRUB 2 维基页面在 Fedora wiki 上获取一些补充信息。

相关内容