Previously /boot is asumed as the default dir where kernel and initrd is put. However, the directory containing the running kernel image on Atomic systems differs in each installation. Usually something like:
/boot/ostree/rhel-atomic-host-b50a015b637c353dc6554c851f8a1212b60d6121a7316715e4a63e2a4113cd72
This means that kdump will not find vmlinuz when installed on an Atomic host, and thus the kdump service will fail to start.
In this patch, get the sub directory where kernel is put and append it to /boot.
Note: If user change KDUMP_BOOTDIR to other directory, then he need to take care of all related things himself. Otherswise situation will become complicated.
Signed-off-by: Baoquan He bhe@redhat.com --- kdump.sysconfig.i386 | 2 +- kdump.sysconfig.ppc64 | 2 +- kdump.sysconfig.ppc64le | 2 +- kdump.sysconfig.s390x | 2 +- kdump.sysconfig.x86_64 | 2 +- kdumpctl | 11 +++++++++++ kexec-kdump-howto.txt | 10 ++++++++++ 7 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/kdump.sysconfig.i386 b/kdump.sysconfig.i386 index 0d26a66..35070f8 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64 b/kdump.sysconfig.ppc64 index 923aa26..2f2322b 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64le b/kdump.sysconfig.ppc64le index 923aa26..2f2322b 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.s390x b/kdump.sysconfig.s390x index 848b043..de85d59 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=""
#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..e0732d0 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdumpctl b/kdumpctl index 1c97405..fb30934 100755 --- a/kdumpctl +++ b/kdumpctl @@ -292,6 +292,15 @@ get_pcs_cluster_modified_files() echo $modified_files }
+check_boot_dir() +{ + #If user specify a boot dir for kdump kernel, let's use it. Otherwise + #assume it's in the same place as 1st kernel. + [ -n "$KDUMP_BOOTDIR" ] && return + eval $(cat /proc/cmdline | grep "BOOT_IMAGE" | cut -d' ' -f1) + KDUMP_BOOTDIR="/boot"$(dirname $BOOT_IMAGE) +} + setup_target_initrd() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then @@ -311,6 +320,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
On 01/29/15 at 11:52am, Baoquan He wrote:
Previously /boot is asumed as the default dir where kernel and initrd is put. However, the directory containing the running kernel image on Atomic systems differs in each installation. Usually something like:
/boot/ostree/rhel-atomic-host-b50a015b637c353dc6554c851f8a1212b60d6121a7316715e4a63e2a4113cd72
This means that kdump will not find vmlinuz when installed on an Atomic host, and thus the kdump service will fail to start.
In this patch, get the sub directory where kernel is put and append it to /boot.
Note: If user change KDUMP_BOOTDIR to other directory, then he need to take care of all related things himself. Otherswise situation will become complicated.
Signed-off-by: Baoquan He bhe@redhat.com
kdump.sysconfig.i386 | 2 +- kdump.sysconfig.ppc64 | 2 +- kdump.sysconfig.ppc64le | 2 +- kdump.sysconfig.s390x | 2 +- kdump.sysconfig.x86_64 | 2 +- kdumpctl | 11 +++++++++++ kexec-kdump-howto.txt | 10 ++++++++++ 7 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/kdump.sysconfig.i386 b/kdump.sysconfig.i386 index 0d26a66..35070f8 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64 b/kdump.sysconfig.ppc64 index 923aa26..2f2322b 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64le b/kdump.sysconfig.ppc64le index 923aa26..2f2322b 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=""
Maybe we should comment the KDUMP_BOOTDIR default value, if leave the KDUMP_BOOTDIR' value NULL.
Thanks Minfei
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.s390x b/kdump.sysconfig.s390x index 848b043..de85d59 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=""
#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..e0732d0 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdumpctl b/kdumpctl index 1c97405..fb30934 100755 --- a/kdumpctl +++ b/kdumpctl @@ -292,6 +292,15 @@ get_pcs_cluster_modified_files() echo $modified_files }
+check_boot_dir() +{
- #If user specify a boot dir for kdump kernel, let's use it. Otherwise
- #assume it's in the same place as 1st kernel.
- [ -n "$KDUMP_BOOTDIR" ] && return
- eval $(cat /proc/cmdline | grep "BOOT_IMAGE" | cut -d' ' -f1)
- KDUMP_BOOTDIR="/boot"$(dirname $BOOT_IMAGE)
+}
setup_target_initrd() { if [ $DEFAULT_DUMP_MODE == "fadump" ]; then @@ -311,6 +320,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
-- 1.8.5.3
kexec mailing list kexec@lists.fedoraproject.org https://lists.fedoraproject.org/mailman/listinfo/kexec
On 01/29/15 at 01:06pm, Minfei Huang wrote:
On 01/29/15 at 11:52am, Baoquan He wrote:
Previously /boot is asumed as the default dir where kernel and initrd
#Where to find the boot image -KDUMP_BOOTDIR="/boot" +KDUMP_BOOTDIR=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64 b/kdump.sysconfig.ppc64 index 923aa26..2f2322b 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=""
#What is the image type used for kdump KDUMP_IMG="vmlinuz" diff --git a/kdump.sysconfig.ppc64le b/kdump.sysconfig.ppc64le index 923aa26..2f2322b 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=""
Maybe we should comment the KDUMP_BOOTDIR default value, if leave the KDUMP_BOOTDIR' value NULL.
I added a description in kexec-kdump-howto.txt. But this is a good idea, it's better to say something.