diff --git a/kdump.conf b/kdump.conf index a7cc28c..0846ecc 100644 --- a/kdump.conf +++ b/kdump.conf @@ -34,14 +34,22 @@ # dumping to. Ignored for raw device dumps. # If unset, will default to /var/crash. # -# core_collector makedumpfile -# - This directive allows you to use the dump filtering -# program makedumpfile to retrieve your core, which on -# some arches can drastically reduce core file size. -# See /sbin/makedumpfile --help for a list of options. -# Note that the -i and -g options are not needed here, -# as the initrd will automatically be populated with -# a config file appropriate for the running kernel. +# core_collector +# - This allows you to specify the command to copy +# the vmcore. You could use the dump filtering +# program makedumpfile, the default one, to retrieve +# your core, which on some arches can drastically +# reduce core file size. See /sbin/makedumpfile --help +# for a list of options. Note that the -i and -g +# options are not needed here, as the initrd will +# automatically be populated with a config file +# appropriate for the running kernel. +# Default core_collector for raw dump is: +# "makedumpfile -F -c --message-level 1 -d 31". +# Default core_collector for other targets is: +# "makedumpfile -c --message-level 1 -d 31". +# For core_collector format details please refer to +# kexec-kdump-howto.txt or kdump.conf manpage. # # extra_bins # - This directive allows you to specify additional @@ -82,7 +90,7 @@ #net user@my.server.com #sshkey /root/.ssh/kdump_id_rsa path /var/crash -#core_collector makedumpfile -c +#core_collector makedumpfile -c --message-level 1 -d 31 #extra_bins /usr/bin/lftp #extra_modules gfs2 #default shell diff --git a/kdump.conf.5 b/kdump.conf.5 index 4af939b..a5824c0 100644 --- a/kdump.conf.5 +++ b/kdump.conf.5 @@ -61,14 +61,32 @@ Append path to the filesystem device which you are dumping to. Ignored for raw device dumps. If unset, will default to /var/crash. .RE -.B core_collector makedumpfile +.B core_collector .RS -This directive allows you to use the dump filtering program -makedumpfile to retrieve your core, which on some arches can -drastically reduce core file size. See /sbin/makedumpfile --help for -a list of options. Note that the -i and -g options are not needed -here, as the initrd will automatically be populated with a config file -appropriate for the running kernel. +This allows you to specify the command to copy the vmcore. +You could use the dump filtering program makedumpfile, the default one, +to retrieve your core, which on some arches can drastically reduce +core file size. See /sbin/makedumpfile --help for a list of options. +Note that the -i and -g options are not needed here, as the initrd +will automatically be populated with a config file appropriate +for the running kernel. +.PP +Note 1: About default core collector: +Default core_collector for raw dump is: +"makedumpfile -F -c --message-level 1 -d 31". +Default core_collector for other targets is: +"makedumpfile -c --message-level 1 -d 31". +Even if core_collector option is commented out in kdump.conf, makedumpfile +is default core collector and kdump uses it internally. +If one does not want makedumpfile as default core_collector, then they +need to specify one using core_collector option to change the behavior. +.PP +Note 2: If "makedumpfile -F" is used then you will get a flattened format +vmcore.flat, you will need to use "makedumpfile -R" to rearrange the +dump data from stdard input to a normal dumpfile (readable with analysis +tools). +ie. "makedumpfile -R vmcore < vmcore.flat" + .RE .B extra_bins @@ -103,8 +121,48 @@ Note: kdump uses bash as the default shell. .RE .SH EXAMPLES +Here is some examples for core_collector option: +.PP +Core collector command format depends on dump target type. Typically for +filesystem (local/remote), core_collector should accept two arguments. +First one is source file and second one is target file. For ex. +.TP +ex1. +core_collector "cp --sparse=always" -see +Above will effectively be translated to: + +cp --sparse=always /proc/vmcore /vmcore +.TP +ex2. +core_collector "makedumpfile -c --message-level 1 -d 31" + +Above will effectively be translated to: + +makedumpfile -c --message-level 1 -d 31 /proc/vmcore /vmcore +.PP +For dump targets like raw, in general, core collector should expect +one argument (source file) and should output the processed core on standard +output. This standard output will be saved to destination using appropriate +commands. + +raw dumps examples: +.TP +ex3. +core_collector "cat" + +Above will effectively be translated to. + +cat /proc/vmcore | dd of= +.TP +ex4. +core_collector "makedumpfile -F -c --message-level 1 -d 31" + +Above will effectively be translated to. + +makedumpfile -F -c --message-level 1 -d 31 | dd of= +.PP +examples for other options please see .I /etc/kdump.conf .SH SEE ALSO diff --git a/kexec-kdump-howto.txt b/kexec-kdump-howto.txt index c5c8cf3..4bab62a 100644 --- a/kexec-kdump-howto.txt +++ b/kexec-kdump-howto.txt @@ -440,18 +440,74 @@ is a dump filtering and compression utility provided with kexec-tools. On some architectures, it can drastically reduce the size of your vmcore files, which becomes very useful on systems with large amounts of memory. -A typical setup is 'core_collector makedumpfile -c', but check the output of -'/sbin/makedumpfile --help' for a list of all available options (-i and -g -don't need to be specified, they're automatically taken care of). Note that -use of makedumpfile requires that the kernel-debuginfo package corresponding -with your running kernel be installed. +A typical setup is 'core_collector makedumpfile -F -c --message-level 1 -d 31', +but check the output of '/sbin/makedumpfile --help' for a list of all available +options (-i and -g don't need to be specified, they're automatically taken care +of). Note that use of makedumpfile requires that the kernel-debuginfo package +corresponding with your running kernel be installed. -Also note that makedumpfile is only used from the initramfs. Saving a -core from the initscript in the root filesystem is considered a last ditch -effort, only used when the initramfs has failed to save the core properly. -As such only the cp utiltiy is used in the initscripts. The implication -here is that in order to use makedumpfile as your core collector, you must -specify a dump target in /etc/kdump.conf. +Core collector command format depends on dump target type. Typically for +filesystem (local/remote), core_collector should accept two arguments. +First one is source file and second one is target file. For ex. + +ex1. +--- +core_collector "cp --sparse=always" + +Above will effectively be translated to: + +cp --sparse=always /proc/vmcore /vmcore + +ex2. +--- +core_collector "makedumpfile -c --message-level 1 -d 31" + +Above will effectively be translated to: + +makedumpfile -c --message-level 1 -d 31 /proc/vmcore /vmcore + + +For dump targets like raw, in general, core collector should expect +one argument (source file) and should output the processed core on standard +output. This standard output will be saved to destination using appropriate +commands. + +raw dumps core_collector examples: +--------- +ex3. +--- +core_collector "cat" + +Above will effectively be translated to. + +cat /proc/vmcore | dd of= + +ex4. +--- +core_collector "makedumpfile -F -c --message-level 1 -d 31" + +Above will effectively be translated to. + +makedumpfile -F -c --message-level 1 -d 31 | dd of= + +About default core collector +---------------------------- +Default core_collector for ssh/raw dump is: +"makedumpfile -F -c --message-level 1 -d 31". +Default core_collector for other targets is: +"makedumpfile -c --message-level 1 -d 31". + +Even if core_collector option is commented out in kdump.conf, makedumpfile +is default core collector and kdump uses it internally. + +If one does not want makedumpfile as default core_collector, then they +need to specify one using core_collector option to change the behavior. + +Note: If "makedumpfile -F" is used then you will get a flattened format +vmcore.flat, you will need to use "makedumpfile -R" to rearrange the +dump data from stdard input to a normal dumpfile (readable with analysis +tools). +For example: "makedumpfile -R vmcore < vmcore.flat" Caveats: