summaryrefslogtreecommitdiff
path: root/dracut-early-kdump-module-setup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'dracut-early-kdump-module-setup.sh')
-rwxr-xr-xdracut-early-kdump-module-setup.sh65
1 files changed, 65 insertions, 0 deletions
diff --git a/dracut-early-kdump-module-setup.sh b/dracut-early-kdump-module-setup.sh
new file mode 100755
index 0000000..e069867
--- /dev/null
+++ b/dracut-early-kdump-module-setup.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+. /etc/sysconfig/kdump
+. /lib/kdump/kdump-lib.sh
+
+KDUMP_KERNEL=""
+KDUMP_INITRD=""
+
+check() {
+ if [ ! -f /etc/sysconfig/kdump ] || [ ! -f /lib/kdump/kdump-lib.sh ]\
+ || [ -n "${IN_KDUMP}" ]
+ then
+ return 1
+ fi
+ return 255
+}
+
+depends() {
+ echo "base shutdown"
+ return 0
+}
+
+prepare_kernel_initrd() {
+ KDUMP_BOOTDIR=$(check_boot_dir "${KDUMP_BOOTDIR}")
+ if [ -z "$KDUMP_KERNELVER" ]; then
+ kdump_kver=`uname -r`
+ if [ "$kernel" != "$kdump_kver" ]; then
+ dwarn "Using current kernel version '$kdump_kver' for early kdump," \
+ "but the initramfs is generated for kernel version '$kernel'"
+ fi
+ else
+ kdump_kver=$KDUMP_KERNELVER
+ fi
+ KDUMP_KERNEL="${KDUMP_BOOTDIR}/${KDUMP_IMG}-${kdump_kver}${KDUMP_IMG_EXT}"
+ KDUMP_INITRD="${KDUMP_BOOTDIR}/initramfs-${kdump_kver}kdump.img"
+}
+
+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_simple "/etc/sysconfig/kdump"
+ inst_binary "/usr/sbin/kexec"
+ inst_binary "/usr/bin/gawk" "/usr/bin/awk"
+ inst_script "/lib/kdump/kdump-lib.sh" "/lib/kdump-lib.sh"
+ inst_hook cmdline 00 "$moddir/early-kdump.sh"
+ inst_binary "$KDUMP_KERNEL"
+ inst_binary "$KDUMP_INITRD"
+
+ ln_r "$KDUMP_KERNEL" "${KDUMP_BOOTDIR}/${KDUMP_IMG}-earlykdump${KDUMP_IMG_EXT}"
+ ln_r "$KDUMP_INITRD" "${KDUMP_BOOTDIR}/initramfs-earlykdump.img"
+
+ chmod -x "${initdir}/$KDUMP_KERNEL"
+}