[PATCH 0/3] Use a standalone kdump emergency shell
by Kairui Song
Currently kdump use some wrapper around dracut emergency service and
emergency shell, this have many problems:
- If dracut-initqueue failed back to emergency mode due to timeout,
and faiure action is set to dump_to_rootfs, kdump will try start
initqueue again, lead to double timeout error.
- Dracut's emergency shell have many builtin actions, like
perform dracut emergency_action, ask for root password, generate
rdsosreport etc.
This series remove the emergency wrapper, and use a standalone kdump
emergency shell. Kdump will always perform final_action after kdump
shell, so simplified version works fine.
Kairui Song (3):
Don's try to restart dracut-initqueue if it's already there
Remove the kdump error handler isolation wrapper
Use a customized emergency shell
dracut-kdump-emergency.service | 25 +++++++++----------
dracut-kdump-error-handler.service | 33 ------------------------
dracut-module-setup.sh | 1 -
kdump-lib-initramfs.sh | 40 +++++++++++++++++++++++++-----
kexec-tools.spec | 2 --
5 files changed, 46 insertions(+), 55 deletions(-)
delete mode 100644 dracut-kdump-error-handler.service
--
2.29.2
3 years
[PATCH v2] Doc: improve the kexec-kdump-howto.txt documentation
by Lianbo Jiang
Because there are some duplicated contents, this will remove the
infrequently used options descriptions from the "kexec-kdump-howto.txt",
only add the "KDUMP_COMMANDLINE_REMOVE" and "KDUMP_COMMANDLINE_APPEND".
Signed-off-by: Lianbo Jiang <lijiang(a)redhat.com>
---
kexec-kdump-howto.txt | 78 +++++++++++++++----------------------------
1 file changed, 27 insertions(+), 51 deletions(-)
diff --git a/kexec-kdump-howto.txt b/kexec-kdump-howto.txt
index 88af6078ae6e..d23dd24b3fc7 100644
--- a/kexec-kdump-howto.txt
+++ b/kexec-kdump-howto.txt
@@ -525,7 +525,7 @@ Advanced Setups
===============
About /etc/sysconfig/kdump
-------------------------------
+--------------------------
Currently, there are a few options in /etc/sysconfig/kdump, which are
usually used to control the behavior of kdump kernel. Basically, all of
@@ -533,51 +533,29 @@ these options have default values, usually we do not need to change them,
but sometimes, we may modify them in order to better control the behavior
of kdump kernel such as debug, etc.
--KDUMP_BOOTDIR
+Usually option of kexec utility is used to inherit the kernel cmdline
+from the 1st kernel for kdump kernel. E.g specifying --command-line=
+"`cat /proc/cmdline`" or simply using '--reuse-cmdline'. Then only need
+modify KDUMP_COMMANDLINE_APPEND and KDUMP_COMMANDLINE_REMOVE in the
+/etc/sysconfig/kdump to adjust the kernel cmdline of kdump as expected.
+
+For detailed description of each options, please refer to the file
+/etc/sysconfig/kdump directly.
+
+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.
-Then kdump kernel will be /boot/xxx/vmlinuz-3.yyy.zzz. However, this option
-is provided to user if kdump kernel is put in a different directory.
-
--KDUMP_IMG
-
-This represents the image type used for kdump. The default value is "vmlinuz".
-
--KDUMP_IMG_EXT
-
-This represents the images extension. Relocatable kernels don't have one.
-Currently, it is a null string by default.
-
--KEXEC_ARGS
-
-Any additional kexec arguments required. For example:
-KEXEC_ARGS="--elf32-core-headers".
-
-In most situations, this should be left empty. But, sometimes we hope to get
-additional kexec loading debugging information, we can add the '-d' option
-for the debugging.
-
--KDUMP_KERNELVER
-
-This is a kernel version string for the kdump kernel. If the version is not
-specified, the init script will try to find a kdump kernel with the same
-version number as the running kernel.
-
--KDUMP_COMMANDLINE
-
-The value of 'KDUMP_COMMANDLINE' will be passed to kdump kernel as command
-line parameters, this will likely match the contents of the grub kernel line.
-
-In general, if a command line is not specified, which means that it is a null
-string such as KDUMP_COMMANDLINE="", the default will be taken automatically
-from the '/proc/cmdline'.
-
--KDUMP_COMMANDLINE_REMOVE
+KDUMP_COMMANDLINE_REMOVE
+------------------------
This option allows us to remove arguments from the current kdump command line.
If we don't specify any parameters for the KDUMP_COMMANDLINE, it will inherit
@@ -586,30 +564,28 @@ default kernel parameters could affect kdump, furthermore, that could cause
the failure of kdump kernel boot.
In addition, the option is also helpful to debug the kdump kernel, we can use
-this option to change kdump kernel command line.
+this option to change kdump kernel command line. For example:
-For more kernel parameters, please refer to kernel document.
+KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
--KDUMP_COMMANDLINE_APPEND
+For more kernel parameters, please refer to kernel document:
+Documentation/admin-guide/kernel-parameters.txt.
+
+KDUMP_COMMANDLINE_APPEND
+------------------------
This option allows us to append arguments to the current kdump command line
after processed by the KDUMP_COMMANDLINE_REMOVE. For kdump kernel, some
specific modules require to be disabled like the mce, cgroup, numa, hest_disable,
etc. Those modules may waste memory or kdump kernel doesn't need them,
-furthermore, there may affect kdump kernel boot.
+furthermore, there may affect kdump kernel boot. For example:
+
+KDUMP_COMMANDLINE_APPEND="cgroup_disable=memory"
Just like above option, it can be used to disable or enable some kernel
modules so that we can exclude any errors for kdump kernel, this is very
meaningful for debugging.
--KDUMP_STDLOGLVL | KDUMP_SYSLOGLVL | KDUMP_KMSGLOGLVL
-
-These variables are used to control the kdump log level in the first kernel.
-In the second kernel, kdump will use the rd.kdumploglvl option to set the log
-level in the above KDUMP_COMMANDLINE_APPEND.
-
-Logging levels: no logging(0), error(1), warn(2), info(3), debug(4)
-
Kdump Post-Capture Executable
-----------------------------
--
2.29.2
3 years
About sanboxing kdump initramfs for fadump
by Kairui Song
Hi Hari,
Recently we are considering embedding the crash dump initramfs as a
standalone environment inside a normal initramfs, and use this as the
fadump initramfs. fadump can use an early init script to jump into the
crash dump environment.
This helps clean up many existing problems for currently fadump
intiramfs structure (mixing two initramfs together). I noticed there
are bug report from IBM about this so not sure if you are also working
on this? There are quite some changes to the dracut-squash module in
upstream recently, and seems you want to leverage it?
I'm also thinking about adding more upstream patches to the
dracut-squash module to make it more suitable for this fadump usage,
if necessary.
Many implementation details are not decided yet, just want to know and
sync the progress in case we are working on the same thing.
--
Best Regards,
Kairui Song
3 years
[PATCH] Add /etc/hosts to kdump initramfs for nfs/ssh dump
by HAGIO KAZUHITO(萩尾 一仁)
Hi,
I hit the following issue and wrote this patch, but I found later that
it might be better to fix the dracut nfs/ssh-client modules in this case.
but I'm not familiar with dracut.. could I have any comments?
Thanks,
Kazu
From f39a89d5da01cb5f27ff4b1c8a81d6b58601e80c Mon Sep 17 00:00:00 2001
From: Kazuhito Hagio <k-hagio-ab(a)nec.com>
Subject: [PATCH] Add /etc/hosts to kdump initramfs for nfs/ssh dump
Currently the /etc/hosts file is not contained in kdump initramfs
by default. Hosts that depend only on /etc/hosts to resolve IP
address (i.e. do not have DNS servers) can start kdump service with
hostname nfs/ssh configuration, but fail in resolving the target
server's IP address on the 2nd kernel:
mount[355]: mount.nfs: Failed to resolve server dumpsrv: Name or service not known
...
systemd[1]: kdumproot-dump.mount: Mount process exited, code=exited, status=32/n/a
systemd[1]: kdumproot-dump.mount: Failed with result 'exit-code'.
systemd[1]: Failed to mount /kdumproot/dump.
Add the /etc/hosts file to kdump initramfs when nfs/ssh dump is
configured. The /etc/nsswitch.conf file is also required for ssh
dump according to a test.
Signed-off-by: Kazuhito Hagio <k-hagio-ab(a)nec.com>
---
dracut-module-setup.sh | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 8316589b3ac8..c59750810cf0 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -874,6 +874,10 @@ install() {
# nfs/ssh dump will need to get host ip in second kernel and need to call 'ip' tool, see get_host_ip for more detail
if is_nfs_dump_target || is_ssh_dump_target; then
inst "ip"
+ # For hosts that depend only on /etc/hosts to resolve IP address.
+ # /etc/nsswitch.conf is also required for ssh dump.
+ inst "/etc/hosts"
+ inst "/etc/nsswitch.conf"
fi
# For the lvm type target under kdump, in /etc/lvm/lvm.conf we can
--
2.18.4
3 years