When a network-based dump target is configured, the interface name is
prefixed with 'kdump-'. While this has no consequence for production
kernel when kdump is configured, the network interface name is changed
for production kernel as well when fadump is configured. Avoid that
and ensure network interface is renamed only while capturing vmcore.
Signed-off-by: Hari Bathini <hbathini(a)linux.ibm.com>
---
Changes in v2:
* Removed network interface config files (prefixed with 'kdump-') while
booting production kernel.
dracut-kdump-boot.sh | 16 ++++++++++++++++
dracut-module-setup.sh | 1 +
kexec-tools.spec | 3 +++
3 files changed, 20 insertions(+)
create mode 100644 dracut-kdump-boot.sh
diff --git a/dracut-kdump-boot.sh b/dracut-kdump-boot.sh
new file mode 100644
index 0000000..e5b8c27
--- /dev/null
+++ b/dracut-kdump-boot.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# An Initrd with dump capturing support can boot a production kernel
+# as well (FADump). In such scenario, avoid enforcing such parameters
+# in production kernel that make sense only while capturing dump.
+[ ! -f /etc/fadump.initramfs ] && return
+
+if [ ! -f /proc/device-tree/rtas/ibm,kernel-dump ]; then
+ rm -f /etc/cmdline.d/40kdump-ip.conf
+ rm -f /etc/cmdline.d/41kdump-bridge.conf
+ rm -f /etc/cmdline.d/42kdump-bond.conf
+ rm -f /etc/cmdline.d/43kdump-vlan.conf
+ rm -f /etc/cmdline.d/44kdump-team.conf
+ rm -f /etc/cmdline.d/60kdumpnic.conf
+ rm -f /etc/cmdline.d/70kdump-bootdev.conf
+fi
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 578a7b3..09db5e9 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -800,6 +800,7 @@ install() {
cp "$moddir/kdump-emergency.target"
"$initdir/$systemdsystemunitdir/emergency.target"
# Also redirect dracut-emergency to kdump error handler
ln_r "$systemdsystemunitdir/emergency.service"
"$systemdsystemunitdir/dracut-emergency.service"
+ inst_hook cmdline 30 "$moddir/kdump-boot.sh"
# Check for all the devices and if any device is iscsi, bring up iscsi
# target. Ideally all this should be pushed into dracut iscsi module
diff --git a/kexec-tools.spec b/kexec-tools.spec
index cd90e3d..17442ad 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -44,6 +44,7 @@ Source106: dracut-kdump-capture.service
Source107: dracut-kdump-emergency.target
Source108: dracut-early-kdump.sh
Source109: dracut-early-kdump-module-setup.sh
+Source110: dracut-kdump-boot.sh
Requires(post): systemd-units
Requires(preun): systemd-units
@@ -204,6 +205,8 @@ cp %{SOURCE108}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlyk
cp %{SOURCE109}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_early_kdump_prefix
%{SOURCE109}}
chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_prefix
%{SOURCE108}}
chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99earlykdump/%{remove_dracut_early_kdump_prefix
%{SOURCE109}}
+cp %{SOURCE110}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE110}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE110}}
%define dracutlibdir %{_prefix}/lib/dracut