Skip to content

Commit

Permalink
Add kdump dracut config
Browse files Browse the repository at this point in the history
In some cases, we need to change dracut [omit_]dracutmodules to
customize the first kernel's initrd to meet the needs, such as
bootc and CoreOS.

In most cases kdump does not use these modules, but the change of
[omit]_dracutmodules may break existing functionality. For example,
if we set omit_dracutmodules='nfs', the nfs module cannot be added
even if we use "dracut_args --force-add 'nfs'".

Some dracut conf may override dracutmodules variable, this also may
break the building of kdump img. We need to keep it empty.

It is better to maintain its own dracut config for kdump. This patch
moved the hardcoded dracut modules and omit modules to the new conf
dir /lib/kdump/dracut.conf.d/99-kdump.conf.

Dracut will support --add-confdir start by 104, kdump can use this
option when building kdump initramfs. If --add-confdir is not
available in your system, kdump will use --confdir, in this case,
the default confdir "/etc/dracut.conf.d" will not work while
generating kdump initrd.

Suggested-by: Dave Young <[email protected]>
Suggested-by: Colin Walters <[email protected]>
Signed-off-by: Lichen Liu <[email protected]>
  • Loading branch information
licliu committed Oct 14, 2024
1 parent 58dbc64 commit 6d11925
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
3 changes: 3 additions & 0 deletions 99-kdump.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dracutmodules=''
add_dracutmodules+='kdumpbase'
omit_dracutmodules+='rdma plymouth resume ifcfg earlykdump'
3 changes: 2 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ manpages:
install -D -m 644 kdump.conf.5 $(DESTDIR)$(mandir)/man5/kdump.conf.5

install: dracut-modules kdump-conf kdump-sysconfig manpages
mkdir -p $(DESTDIR)$(pkglibdir)
mkdir -p $(DESTDIR)$(pkglibdir)/dracut.conf.d
mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/pre.d
mkdir -p -m755 $(DESTDIR)$(sysconfdir)/kdump/post.d
mkdir -p -m755 $(DESTDIR)$(localstatedir)/crash
Expand All @@ -46,6 +46,7 @@ install: dracut-modules kdump-conf kdump-sysconfig manpages
install -D -m 644 kdump.conf $(DESTDIR)$(sysconfdir)
install -D -m 644 kdump.sysconfig $(DESTDIR)$(sysconfdir)/sysconfig/kdump
install -D -m 755 kdump-lib.sh kdump-lib-initramfs.sh kdump-logger.sh -t $(DESTDIR)$(pkglibdir)
install -D -m 644 99-kdump.conf -t $(DESTDIR)$(pkglibdir)/dracut.conf.d

ifeq ($(ARCH), $(filter ppc64le ppc64,$(ARCH)))
install -m 755 mkfadumprd $(DESTDIR)$(sbindir)
Expand Down
16 changes: 14 additions & 2 deletions mkdumprd
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,13 @@ SSH_KEY_LOCATION=$DEFAULT_SSHKEY
SAVE_PATH=$(get_save_path)

declare -a dracut_args
dracut_args+=(--add kdumpbase)
dracut_args+=(--quiet)
dracut_args+=(--hostonly)
dracut_args+=(--hostonly-cmdline)
dracut_args+=(--hostonly-i18n)
dracut_args+=(--hostonly-mode strict)
dracut_args+=(--hostonly-nics '')
dracut_args+=(--aggressive-strip)
dracut_args+=(--omit "rdma plymouth resume ifcfg earlykdump")

MKDUMPRD_TMPDIR="$(mktemp -d -t mkdumprd.XXXXXX)"
[ -d "$MKDUMPRD_TMPDIR" ] || perror_exit "dracut: mktemp -p -d -t dracut.XXXXXX failed."
Expand Down Expand Up @@ -441,4 +439,18 @@ elif ! is_fadump_capable && \
add_mount "$status_target"
fi

# Use kdump managed dracut profile.
_dracut_add_confdir_option="--confdir"
if dracut --help | grep -q "add-confdir" ; then
_dracut_add_confdir_option="--add-confdir"
fi

[[ $kdumpdracutconfdir ]] || kdumpdracutconfdir=/lib/kdump/dracut.conf.d
if [ -d "$kdumpdracutconfdir" ]; then
dracut_args+=("$_dracut_add_confdir_option" "$kdumpdracutconfdir")
else
dracut_args+=(--add kdumpbase)
dracut_args+=(--omit "rdma plymouth resume ifcfg earlykdump")
fi

dracut "${dracut_args[@]}" "$@"

0 comments on commit 6d11925

Please sign in to comment.