如何在 CentOS 中为所有现有和未来的内核设置默认内核参数?

如何在 CentOS 中为所有现有和未来的内核设置默认内核参数?

我想删除在 CentOS 6 中启动内核时默认使用的rhgbquiet内核参数,但我希望这适用于所有当前安装的内核以及将来安装的任何内核。我需要通过脚本执行此操作,因此手动编辑文件不是一种选择,任何文件更改都应尽可能干净地完成。

在 Debian/Ubuntu 中,我会更改GRUB_CMDLINE_LINUX_DEFAULT然后/etc/default/grub运行。但是我在或update-grub中找不到这样的设置,也没有脚本。/etc/sysconfig/grub/etc/sysconfig/kernelupdate-grub

答案1

在 Debian/Ubuntu 中,grub.cfg完全由脚本生成,任何手动更改都将被覆盖。然而,在 RHEL/CentOS 中,grub.cfg由脚本修改,但手动更改会保留,并且实际上是某些设置的规范位置。

管理的工具grub.cfggrubby/sbin/new-kernel-pkg,在安装或删除内核时由 调用。安装新内核时,--copy-default将参数传递给grubby,这会导致它从当前默认内核复制内核参数。因此,可以通过编辑 中的默认内核条目来设置将来安装的内核的默认内核参数grub.cfg

如果您没有自动执行此操作,您可以简单地手动编辑grub.cfg并更改所有当前内核条目。但是,您可以使用grubby修改grub.cfg以避免解析它或编写正则表达式。例如,这将从指定的内核版本中删除rhgb和参数。quiet

# grubby --update-kernel=/boot/vmlinuz-2.6.32-220.13.1.el6.x86_64 --remove-args="rhgb quiet"

但是似乎没有列出当前配置的内核的选项,因此您必须通过其他方式找到它们。一个选项是只查找vmlinuz以下文件/boot/

#!/bin/sh
for KERNEL in /boot/vmlinuz-*; do
    grubby --update-kernel="$KERNEL" --remove-args="rhgb quiet"
done

答案2

我们找到了 CentOS 的解决方案!yum 本身使用 grubby!(strace,谢谢!)grubby 有选项“--copy-default”,我认为 yum 用它运行 grubby。所以你唯一要做的就是在 grub.conf 中将你需要的所有内核选项添加到当前默认内核并重新启动。重新启动后,你可以安装新内核!

相关内容