earlykdump: add more sanity check when generating initramfs

Currently when earlykdump failed to install required kernel image or
initramfs, it will still install the earlykdump hook and other utils.
But it won't work due to the absent of kernel image or kdump initramfs,
so the hook and installed utils is meanless.

We can't simply fail dracut building, as if earlykdump is included by
dracut config file, this may fail kernel update, where kernel image is
installed but initramfs failed to generate, and then it will fail
booting.

So this patch let it skip earlydkump install if anything is missing and
give a clean error message to let the user better ware of the situation.

Signed-off-by: Kairui Song <kasong@redhat.com>
Acked-by: Dave Young <dyoung@redhat.com>
This commit is contained in:
Kairui Song 2019-01-10 14:44:15 +08:00
parent 8a476dabf0
commit d45da38dca

View File

@ -32,13 +32,25 @@ prepare_kernel_initrd() {
} }
install() { install() {
prepare_kernel_initrd
if [ ! -f "$KDUMP_KERNEL" ]; then
derror "Could not find required kernel for earlykdump," \
"earlykdump will not work!"
return 1
fi
if [ ! -f "$KDUMP_INITRD" ]; then
derror "Could not find required kdump initramfs for earlykdump," \
"please ensure kdump initramfs is generated first," \
"earlykdump will not work!"
return 1
fi
inst_multiple tail find cut dirname hexdump inst_multiple tail find cut dirname hexdump
inst_simple "/etc/sysconfig/kdump" inst_simple "/etc/sysconfig/kdump"
inst_binary "/usr/sbin/kexec" inst_binary "/usr/sbin/kexec"
inst_binary "/usr/bin/gawk" "/usr/bin/awk" inst_binary "/usr/bin/gawk" "/usr/bin/awk"
inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh" inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh"
inst_hook cmdline 00 "$moddir/early-kdump.sh" inst_hook cmdline 00 "$moddir/early-kdump.sh"
prepare_kernel_initrd
inst_binary "$KDUMP_KERNEL" inst_binary "$KDUMP_KERNEL"
inst_binary "$KDUMP_INITRD" inst_binary "$KDUMP_INITRD"