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