How do I set the default kernel parameters in CentOS for all existing and future kernels?
I'd like to remove the rhgb
and quiet
kernel parameters which are used by default when the kernel is booted in CentOS 6, but I want this to apply to all currently installed kernels as well as any kernels installed in the future. I need to do this from a script, so manually editing files isn't an option and any file changes should be done as cleanly as possible.
In Debian/Ubuntu I would change GRUB_CMDLINE_LINUX_DEFAULT
in /etc/default/grub
and then run update-grub
. I can't find such a setting in /etc/sysconfig/grub
or /etc/sysconfig/kernel
however, nor is there an update-grub
script.
Solution 1:
In Debian/Ubuntu, grub.cfg
is fully generated by scripts and any manual changes made to it will be clobbered. In RHEL/CentOS however, grub.cfg
is modified by scripts but manual changes are persisted, and is actually the canonical location for certain settings.
The tool which manages grub.cfg
is grubby
, which is called by /sbin/new-kernel-pkg
when kernels are installed or removed. The --copy-default
parameter is passed to grubby
when a new kernel is installed, which causes it to copy the kernel parameters from the current default kernel. Setting the default kernel parameters for future-installed kernels is therefore done by editing the entry for the default kernel in grub.cfg
.
If you weren't automating this you could simply edit grub.cfg
manually and change all the current kernel entries. However, you can use grubby
to modify grub.cfg
in order to avoid parsing it or writing regular expressions. For example, this will remove the rhgb
and quiet
parameters from the specified kernel version.
# grubby --update-kernel=/boot/vmlinuz-2.6.32-220.13.1.el6.x86_64 --remove-args="rhgb quiet"
There doesn't seem to be an option to list the currently configured kernels however, so you'll have to discover these another way. One option is to just look for vmlinuz
files in /boot/
:
#!/bin/sh
for KERNEL in /boot/vmlinuz-*; do
grubby --update-kernel="$KERNEL" --remove-args="rhgb quiet"
done
Solution 2:
We found a solution for CentOS! yum uses grubby itself! (strace, thank you!) grubby has the option "--copy-default" and I think yum runs grubby with it. So only thing you should do is to add in grub.conf all kernel options you need to current default kernel and reboot. After reboot you can install new kernel!