diff --git a/kdump.sysconfig.i386 b/kdump.sysconfig.i386 index 0d26a66..84b2447 100644 --- a/kdump.sysconfig.i386 +++ b/kdump.sysconfig.i386 @@ -26,7 +26,7 @@ KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices numa=off udev.children KEXEC_ARGS="" #Where to find the boot image -KDUMP_BOOTDIR="/boot" +#KDUMP_BOOTDIR="/boot" #What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64 b/kdump.sysconfig.ppc64 index 923aa26..5295626 100644 --- a/kdump.sysconfig.ppc64 +++ b/kdump.sysconfig.ppc64 @@ -26,7 +26,7 @@ KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_di KEXEC_ARGS="" #Where to find the boot image -KDUMP_BOOTDIR="/boot" +#KDUMP_BOOTDIR="/boot" #What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64le b/kdump.sysconfig.ppc64le index 923aa26..5295626 100644 --- a/kdump.sysconfig.ppc64le +++ b/kdump.sysconfig.ppc64le @@ -26,7 +26,7 @@ KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 noirqdistrib reset_devices cgroup_di KEXEC_ARGS="" #Where to find the boot image -KDUMP_BOOTDIR="/boot" +#KDUMP_BOOTDIR="/boot" #What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.s390x b/kdump.sysconfig.s390x index 848b043..745dd27 100644 --- a/kdump.sysconfig.s390x +++ b/kdump.sysconfig.s390x @@ -29,7 +29,7 @@ MKDUMPRD_ARGS="" KEXEC_ARGS="" #Where to find the boot image -KDUMP_BOOTDIR="/boot" +#KDUMP_BOOTDIR="/boot" #What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.x86_64 b/kdump.sysconfig.x86_64 index 989c3c7..d9ad9b5 100644 --- a/kdump.sysconfig.x86_64 +++ b/kdump.sysconfig.x86_64 @@ -26,7 +26,7 @@ KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory KEXEC_ARGS="" #Where to find the boot image -KDUMP_BOOTDIR="/boot" +#KDUMP_BOOTDIR="/boot" #What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdumpctl b/kdumpctl index 1c97405..31ceb47 100755 --- a/kdumpctl +++ b/kdumpctl @@ -292,6 +292,23 @@ get_pcs_cluster_modified_files() echo $modified_files } +check_boot_dir() +{ + local _is_atomic + #If user specify a boot dir for kdump kernel, let's use it. Otherwise + #check whether it's a atomic host. If yes parse the subdirectory under + #/boot; If not just find it under /boot. + [ -n "$KDUMP_BOOTDIR" ] && return + + _is_atomic=$(cat /proc/cmdline | grep "ostree") + if [ -z "$_is_atomic" ] || [ "$(uname -m)" = "s390x" ]; then + KDUMP_BOOTDIR="/boot" + else + eval $(cat /proc/cmdline| grep "BOOT_IMAGE" | cut -d' ' -f1) + KDUMP_BOOTDIR="/boot"$(dirname $BOOT_IMAGE) + fi +} + setup_target_initrd() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then @@ -311,6 +328,8 @@ check_rebuild() local _force_rebuild force_rebuild="0" local initramfs_has_fadump + check_boot_dir + if [ -z "$KDUMP_KERNELVER" ]; then kdump_kver=`uname -r` else diff --git a/kexec-kdump-howto.txt b/kexec-kdump-howto.txt index 5582e40..05b497f 100644 --- a/kexec-kdump-howto.txt +++ b/kexec-kdump-howto.txt @@ -404,6 +404,16 @@ Say foo.com:/export/tmp is mounted on /var. In this case dump target is nfs server and path will be adjusted to "/crash" and dump will be saved to foo.com:/export/tmp/crash/ directory. +Kdump boot directory +==================== +Usually kdump kernel is the same as 1st kernel. So kdump will try to find +kdump kernel under /boot according to /proc/cmdline. E.g we execute below +command and get an output: + cat /proc/cmdline + BOOT_IMAGE=/xxx/vmlinuz-3.yyy.zzz root=xxxx ..... +Then kdump kernel will be /boot/xxx/vmlinuz-3.yyy.zzz. +However a variable KDUMP_BOOTDIR in /etc/sysconfig/kdump is provided to +user if kdump kernel is put in a different directory. Kdump Post-Capture Executable