3.2. Using kdump and kexec with the Red Hat Enterprise Linux for Real Time Kernel
kdump is a reliable kernel crash dumping mechanism because the crash dump is captured from the context of a freshly booted kernel and not from the context of the crashed kernel. kdump uses a mechanism called
kexec
to boot into a second kernel whenever the system crashes. This second kernel, often called the crash kernel, boots with very little memory and captures the dump image.
If kdump is enabled on your system, the standard boot kernel will reserve a small section of system RAM and load the
kdump
kernel into the reserved space. When a kernel panic or other fatal error occurs, kexec
is used to boot into the kdump kernel without going through BIOS. The system reboots to the kdump kernel that is confined to the memory space reserved by the standard boot kernel, and this kernel writes a copy or image of the system memory to the storage mechanism defined in the configuration files. Because kexec
does not go through the BIOS, the memory of the original boot is retained, and the crash dump is much more detailed. Once this is done, the kernel reboots, which resets the machine and brings the boot kernel back up.
There are three required procedures for enabling kdump under Red Hat Enterprise Linux 7. First, ensure that the required RPM packages are installed on the system. Second, create the minimum configuration and modifies the GRUB command line using the
rt-setup-kdump
tool. Third, use a graphical system configuration tool called system-config-kdump
to create and enable a detailed kdump configuration.
Installing Required kdump Packages
Thert-setup-kdump
tool is part of the rt-setup package. You also need kexec-tools and system-config-kdump:~]#
yum install rt-setup kexec-tools system-config-kdump
Creating a Basic kdump Kernel with
rt-setup-kdump
- Run the
rt-setup-kdump
tool asroot
:~]#
rt-setup-kdump --grub
The--grub
parameter adds the necessary changes to all the real-time kernel entries listed in the GRUB configuration. - Restart the system to set up the reserved memory space. You can then turn on the kdump init script and start the kdump service:
~]#
systemctl enable kdump
~]#systemctl start kdump
Enabling kdump with
system-config-kdump
- Select the Kernel crash dumps system tool from the Applications → System Tools menu, or use the following command at the shell prompt:
~]#
system-config-kdump
- The Kernel Dump Configuration window displays. On the toolbar, click the button labeled Enable. The Red Hat Enterprise Linux for Real Time kernel supports the
crashkernel=auto
parameter which automatically calculates the amount of memory necessary to accommodate the kdump kernel.By design, on Red Hat Enterprise Linux 7 systems with less than 4GB of RAM, thecrashkernel=auto
does not reserve any memory for the kdump kernel. In this case, it is necessary to manually set the amount of memory required. You can do so by entering your required value in the New kdump memory field on the Basic Settings tab:Note
An alternative way of allocating memory for the kdump kernel is by manually setting thecrashkernel=<value>
parameter in the GRUB configuration. - Click the Target Settings tab, and specify the target location for your dump file. It can be either stored as a file in a local file system, written directly to a device, or sent over a network using the NFS (Network File System) or SSH (Secure Shell) protocol.To save your settings, click the Apply button on the toolbar.
- Reboot the system to ensure that kdump is properly started. If you want to check that the kdump is working correctly, you can simulate a panic using
sysrq
:~]#
echo c > /proc/sysrq-trigger
This will cause the kernel to panic, and the system will boot into the kdump kernel. Once your system has been brought back up, you can check the log file at the specified location.
Note
Some hardware needs to be reset during the configuration of the kdump kernel. If you have any problems getting the kdump kernel to work, edit the
/etc/sysconfig/kdump
file and add reset_devices=1
to the KDUMP_COMMANDLINE_APPEND
variable.
Important
On IBM LS21 machines, the following warning message can occur when attempting to boot the kdump kernel:
irq 9: nobody cared (try booting with the "irqpoll" option) handlers: [<ffffffff811660a0>] (acpi_irq+0x0/0x1b) turning off IO-APIC fast mode.
Some systems will recover from this error and continue booting, while some will freeze after displaying the message. This is a known issue. If you see this error, add the line
acpi=noirq
as a boot parameter to the kdump kernel. Only add this line if this error occurs as it can cause boot problems on machines not affected by this issue.
Related Manual Pages
For more information, or for further reading, the following man page is related to the information given in this section.
- kexec(8)
/etc/kdump.conf