Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,16 @@ details.

Use the following environment variables:

* WM2_VERBOSE: value from 0 (default, no logging) - 3 (tracing).
* `WM2_VERBOSE:` value from 0 (default, no logging) - 3 (tracing).
the -v/--verbose option increases log level by one.
* WM2_DEBUG: 0 (default) or 1. Enables verbose output of certain
* `WM2_DEBUG`: 0 (default) or 1. Enables verbose output of certain
commands called by weak-modules2. Equivalent to --debug.
* WM2_LOGFILE: redirect the output to the given file.
* `WM2_LOGFILE`: redirect the output to the given file.

### Other environment variables

* `WM2_DEPMOD_INC`: set this to a non-empty string to enable the experimental
"incremental depmod" feature. This will speed up KMP installations.

## Kernel scriptlet files

Expand Down
3 changes: 3 additions & 0 deletions kernel-scriptlets/rpm-script
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,9 @@ EOF
[ -z "$certs" ] || /usr/lib/module-init-tools/kernel-scriptlets/cert-$op --ca-check 1 --certs "$certs" "$@"
;;
posttrans)
if test -x /usr/lib/module-init-tools/regenerate-initrd-posttrans; then
/bin/bash -c 'set +e; /usr/lib/module-init-tools/regenerate-initrd-posttrans' || script_rc=$?
fi
;;
*)
echo Unknown scriptlet "$op" >&2
Expand Down
62 changes: 54 additions & 8 deletions regenerate-initrd-posttrans
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,59 @@ for f in "$dir"/*; do
break
done

tmpdir=$(mktemp -d /var/tmp/r-i-p-XXXXXX)
[ -n "$tmpdir" ] && [ -d "$tmpdir" ] || {
echo "error: failed to create temporary directory" >&2
exit 1
}
trap 'rm -rf "$tmpdir"' 0

start_dracut() {
local kver=$1 x pid
if [ x"$RIP_PARALLEL" != x1 ]; then
if ! "$DRACUT" -f "/boot/initrd-$kver" "$kver"; then
err=$?
fi
else
"$DRACUT" -f "/boot/initrd-$kver" "$kver" >"$tmpdir/dracut-$kver.log" 2>&1 &
pid=$!
echo "$DRACUT started for $kver with pid $pid" >&2
ln -s dracut-$kver.log "$tmpdir/$pid.log"
PIDS="$PIDS $pid"
fi
}

wait_for_dracut() {
local pid err=$1

for pid in $PIDS; do
wait $pid
if [ $? -ne 0 ]; then
err=$?
echo "$DRACUT($pid) failed" >&2
else
echo "$DRACUT($pid) successful" >&2
fi
[[ ! -f "$tmpdir/$pid.log" ]] || cat "$tmpdir/$pid.log"
done
return $err
}

err=0
PIDS=""

if test -e "$dir/all"; then
rm "$dir"/*
"$DRACUT" -f --regenerate-all
exit
rm "$dir"/*
PIDS=""
for f in /lib/modules/*; do
[ -f "$f/modules.dep" ] || [ -f "$f/modules.dep.bin" ] || continue
kver=${f##*/}
start_dracut "$kver"
done
wait_for_dracut "$err"
exit $?
fi
err=0

for f in "$dir"/*; do
case $f in
"$dir/*")
Expand All @@ -53,8 +100,7 @@ for f in "$dir"/*; do
echo $0: skippping invalid kernel version "$dir/$kver"
continue
}
if ! "$DRACUT" -f --kver "$kver"; then
err=$?
fi
start_dracut "$kver"
done
exit $err
wait_for_dracut "$err"
exit $?
Loading