Chapter 4. Configuring kernel command-line parameters
Kernel command-line parameters are a way to change the behavior of certain aspects of the Red Hat Enterprise Linux kernel at boot time. As a system administrator, you have full control over what options get set at boot. Certain kernel behaviors are only able to be set at boot time, so understanding how to make this changes is a key administration skill.
Opting to change the behavior of the system by modifying kernel command-line parameters may have negative effects on your system. You should therefore test changes prior to deploying them in production. For further guidance, contact Red Hat Support.
4.1. Understanding kernel command-line parameters
Kernel command-line parameters are used for boot time configuration of:
- The Red Hat Enterprise Linux kernel
- The initial RAM disk
- The user space features
Kernel boot time parameters are often used to overwrite default values and for setting specific hardware settings.
By default, the kernel command-line parameters for systems using the GRUB2 bootloader are defined in the kernelopts
variable of the /boot/grub2/grubenv
file for all kernel boot entries.
For IBM Z, the kernel command-line parameters are stored in the boot entry configuration file because the zipl bootloader does not support environment variables. Thus, the kernelopts
environment variable cannot be used.
Additional resources
-
For more information about what kernel command-line parameters you can modify, see
kernel-command-line(7)
,bootparam(7)
anddracut.cmdline(7)
manual pages. -
For more information about the
kernelopts
variable, see the knowledge base article, How to install and boot custom kernels in Red Hat Enterprise Linux 8.
4.2. What grubby is
grubby
is a utility for manipulating bootloader-specific configuration files.
You can use grubby
also for changing the default boot entry, and for adding/removing arguments from a GRUB2 menu entry.
For more details see the grubby(8)
manual page.
4.3. What boot entries are
A boot entry is a collection of options which are stored in a configuration file and tied to a particular kernel version. In practice, you have at least as many boot entries as your system has installed kernels. The boot entry configuration file is located in the /boot/loader/entries/
directory and can look like this:
6f9cc9cb7d7845d49698c9537337cedc-4.18.0-5.el8.x86_64.conf
The file name above consists of a machine ID stored in the /etc/machine-id
file, and a kernel version.
The boot entry configuration file contains information about the kernel version, the initial ramdisk image, and the kernelopts
environment variable, which contains the kernel command-line parameters. The contents of a boot entry config can be seen below:
title Red Hat Enterprise Linux (4.18.0-74.el8.x86_64) 8.0 (Ootpa) version 4.18.0-74.el8.x86_64 linux /vmlinuz-4.18.0-74.el8.x86_64 initrd /initramfs-4.18.0-74.el8.x86_64.img $tuned_initrd options $kernelopts $tuned_params id rhel-20190227183418-4.18.0-74.el8.x86_64 grub_users $grub_users grub_arg --unrestricted grub_class kernel
The kernelopts
environment variable is defined in the /boot/grub2/grubenv
file.
Additional resources
For more information about kernelopts
variable, see knowledge base article How to install and boot custom kernels in Red Hat Enterprise Linux 8.
4.4. Setting kernel command-line parameters
To adjust the behavior of your system from the early stages of the booting process, you need to set certain kernel command-line parameters.
This section explains how to change kernel command-line parameters on various CPU architectures.
4.4.1. Changing kernel command-line parameters for all boot entries
This procedure describes how to change kernel command-line parameters for all boot entries on your system.
Prerequisites
-
Verify that the
grubby
andzipl
utilities are installed on your system.
Procedure
To add a parameter:
# grubby --update-kernel=ALL --args="<NEW_PARAMETER>"
For systems that use the GRUB2 bootloader, the command updates the
/boot/grub2/grubenv
file by adding a new kernel parameter to thekernelopts
variable in that file.On IBM Z that use the zIPL bootloader, the command adds a new kernel parameter to each
/boot/loader/entries/<ENTRY>.conf
file.-
On IBM Z, execute the
zipl
command with no options to update the boot menu.
-
On IBM Z, execute the
To remove a parameter:
# grubby --update-kernel=ALL --remove-args="<PARAMETER_TO_REMOVE>"
-
On IBM Z, execute the
zipl
command with no options to update the boot menu.
-
On IBM Z, execute the
Additional resources
- For more information about kernel command-line parameters, see Section 4.1, “Understanding kernel command-line parameters”.
-
For information on the
grubby
utility, see thegrubby(8)
manual page. -
For further examples on how to use
grubby
, see the grubby tool. -
For information about the
zipl
utility, see thezipl(8)
manual page.
4.4.2. Changing kernel command-line parameters for a single boot entry
This procedure describes how to change kernel command-line parameters for a single boot entry on your system.
Prerequisites
-
Verify that the
grubby
andzipl
utilities are installed on your system.
Procedure
To add a parameter:
# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="<NEW_PARAMETER>"
-
On IBM Z, execute the
zipl
command with no options to update the boot menu.
-
On IBM Z, execute the
To remove a parameter use the following:
# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --remove-args="<PARAMETER_TO_REMOVE>"
-
On IBM Z, execute the
zipl
command with no options to update the boot menu.
-
On IBM Z, execute the
On systems that use the grub.cfg
file, there is, by default, the options
parameter for each kernel boot entry, which is set to the kernelopts
variable. This variable is defined in the /boot/grub2/grubenv
configuration file.
On GRUB2 systems:
-
If the kernel command-line parameters are modified for all boot entries, the
grubby
utility updates thekernelopts
variable in the/boot/grub2/grubenv
file. -
If kernel command-line parameters are modified for a single boot entry, the
kernelopts
variable is expanded, the kernel parameters are modified, and the resulting value is stored in the respective boot entry’s/boot/loader/entries/<RELEVANT_KERNEL_BOOT_ENTRY.conf>
file.
On zIPL systems:
-
grubby
modifies and stores the kernel command-line parameters of an individual kernel boot entry in the/boot/loader/entries/<ENTRY>.conf
file.
Additional resources
- For more information about kernel command-line parameters, see Section 4.1, “Understanding kernel command-line parameters”.
-
For information on the
grubby
utility, see thegrubby(8)
manual page. -
For further examples on how to use
grubby
, see the grubby tool. -
For information about the
zipl
utility, see thezipl(8)
manual page.