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