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

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

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

在Debian / Ubuntu中, grub.cfg完全由脚本生成,并且对其进行的任何手动更改都将被破坏。 然而,在RHEL / CentOS中, grub.cfg是由脚本修改的,但手动更改是持久的,实际上是某些设置的规范位置。

pipe理grub.cfg的工具是grub.cfg ,当内核被安装或者删除时,这个工具被/sbin/new-kernel-pkg调用。 --copy-default参数在安装新内核时传递给--copy-default ,这会导致它从当前的默认内核复制内核参数。 因此,为未来安装的内核设置缺省的内核参数是通过编辑grub.cfg缺省内核的条目来grub.cfg

如果你没有自动化这个,你可以简单地手动编辑grub.cfg并更改所有当前的内核条目。 但是,您可以使用grub.cfg来修改grub.cfg ,以避免parsing或编写正则expression式。 例如,这将从指定的内核版本中rhgbquiet参数。

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

但是,似乎没有select列出当前configuration的内核的选项,所以您必须以另一种方式发现这些内核。 一种select是在/boot/查找vmlinuz文件:

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

我们为CentOSfind了一个解决scheme! yum使用肮脏本身! (strace,谢谢!)grubby有选项“–copy-default”,我觉得yum和它一起肮脏。 所以你应该做的只是在grub.conf中添加你需要的所有内核选项给当前的默认内核并重启。 重启后你可以安装新的内核!