Petr Šabata f5bf49
Early Kdump HOWTO
Petr Šabata f5bf49
Petr Šabata f5bf49
Introduction
Petr Šabata f5bf49
------------
Petr Šabata f5bf49
Petr Šabata f5bf49
Early kdump is a mechanism to make kdump operational earlier than normal kdump
Petr Šabata f5bf49
service.  The kdump service starts early enough for general crash cases, but
Petr Šabata f5bf49
there are some cases where it has no chance to make kdump operational in boot
Petr Šabata f5bf49
sequence, such as detecting devices and starting early services.  If you hit
Petr Šabata f5bf49
such a case, early kdump may allow you to get more information of it.
Petr Šabata f5bf49
Petr Šabata f5bf49
Early kdump is implemented as a dracut module.  It adds a kernel (vmlinuz) and
Petr Šabata f5bf49
initramfs for kdump to your system's initramfs in order to load them as early
Petr Šabata f5bf49
as possible.  After that, if you provide "rd.earlykdump" in kernel command line,
Petr Šabata f5bf49
then in the initramfs, early kdump will load those files like the normal kdump
Petr Šabata f5bf49
service.  This is disabled by default.
Petr Šabata f5bf49
Petr Šabata f5bf49
For the normal kdump service, it can check whether the early kdump has loaded
Petr Šabata f5bf49
the crash kernel and initramfs. It has no conflict with the early kdump.
Petr Šabata f5bf49
Petr Šabata f5bf49
How to configure early kdump
Petr Šabata f5bf49
----------------------------
Petr Šabata f5bf49
Petr Šabata f5bf49
We assume if you're reading this document, you should already have kexec-tools
Petr Šabata f5bf49
installed.
Petr Šabata f5bf49
Petr Šabata f5bf49
You can rebuild the initramfs with earlykdump support with below steps:
Petr Šabata f5bf49
Petr Šabata f5bf49
1. start kdump service to make sure kdump initramfs is created.
Petr Šabata f5bf49
Petr Šabata f5bf49
    # systemctl start kdump
Petr Šabata f5bf49
Petr Šabata f5bf49
    NOTE: If a crash occurs during boot process, early kdump captures a vmcore
Petr Šabata f5bf49
    and reboot the system by default, so the system might go into crash loop.
Petr Šabata f5bf49
    You can avoid such a crash loop by adding the following settings, which
Petr Šabata f5bf49
    power off the system after dump capturing, to kdump.conf in advance:
Petr Šabata f5bf49
Petr Šabata f5bf49
        final_action poweroff
Petr Šabata f5bf49
        failure_action poweroff
Petr Šabata f5bf49
Petr Šabata f5bf49
    For the failure_action, you can choose anything other than "reboot".
Petr Šabata f5bf49
Petr Šabata f5bf49
2. rebuild system initramfs with earlykdump support.
Petr Šabata f5bf49
Petr Šabata f5bf49
    # dracut --force --add earlykdump
Petr Šabata f5bf49
Petr Šabata f5bf49
    NOTE: Recommend to backup the original system initramfs before performing
Petr Šabata f5bf49
    this step to put it back if something happens during boot-up.
Petr Šabata f5bf49
Petr Šabata f5bf49
3. add rd.earlykdump in grub kernel command line.
Petr Šabata f5bf49
Petr Šabata f5bf49
After making said changes, reboot your system to take effect. Of course, if you
Petr Šabata f5bf49
want to disable early kdump, you can simply remove "rd.earlykdump" from kernel
Petr Šabata f5bf49
boot parameters in grub, and reboot system like above.
Petr Šabata f5bf49
Petr Šabata f5bf49
Once the boot is completed, you can check the status of the early kdump support
Petr Šabata f5bf49
on the command prompt:
Petr Šabata f5bf49
Petr Šabata f5bf49
    # journalctl -b | grep early-kdump
Petr Šabata f5bf49
Petr Šabata f5bf49
Then, you will see some useful logs, for example:
Petr Šabata f5bf49
Petr Šabata f5bf49
- if early kdump is successful.
Petr Šabata f5bf49
Petr Šabata f5bf49
Mar 09 09:57:56 localhost dracut-cmdline[190]: early-kdump is enabled.
Petr Šabata f5bf49
Mar 09 09:57:56 localhost dracut-cmdline[190]: kexec: loaded early-kdump kernel
Petr Šabata f5bf49
Petr Šabata f5bf49
- if early kdump is disabled.
Petr Šabata f5bf49
Petr Šabata f5bf49
Mar 09 10:02:47 localhost dracut-cmdline[189]: early-kdump is disabled.
Petr Šabata f5bf49
Petr Šabata f5bf49
Notes
Petr Šabata f5bf49
-----
Petr Šabata f5bf49
Petr Šabata f5bf49
- The size of early kdump initramfs will be large because it includes vmlinuz
Petr Šabata f5bf49
  and kdump initramfs.
Petr Šabata f5bf49
Petr Šabata f5bf49
- Early kdump inherits the settings of normal kdump, so any changes that
Petr Šabata f5bf49
  caused normal kdump rebuilding also require rebuilding the system initramfs
Petr Šabata f5bf49
  to make sure that the changes take effect for early kdump. Therefore, after
Petr Šabata f5bf49
  the rebuilding of kdump initramfs is completed, provide a prompt message to
Petr Šabata f5bf49
  tell the fact.
Petr Šabata f5bf49
Petr Šabata f5bf49
- If you install an updated kernel and reboot the system with it, the early
Petr Šabata f5bf49
  kdump will be disabled by default.  To enable it with the new kernel, you
Petr Šabata f5bf49
  need to take the above steps again.
Petr Šabata f5bf49
Petr Šabata f5bf49
Limitation
Petr Šabata f5bf49
----------
Petr Šabata f5bf49
Petr Šabata f5bf49
- At present, early kdump doesn't support fadump.
Petr Šabata f5bf49
Petr Šabata f5bf49
- Early kdump loads a crash kernel and initramfs at the beginning of the
Petr Šabata f5bf49
  process in system's initramfs, so a crash at earlier than that (e.g. in
Petr Šabata f5bf49
  kernel initialization) cannot be captured even with the early kdump.