summaryrefslogtreecommitdiff
path: root/src/kernel-install
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-05-24 22:19:05 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2022-05-24 23:31:43 +0200
commit620ecc9c4bb8769b2acb6c1b9b64b330d0f76fc1 (patch)
tree4becd57f3612eab23de1b70a929df48623644b4a /src/kernel-install
parent9e03f48d21871bbca5efbfd26b67aca12265a618 (diff)
downloadsystemd-620ecc9c4bb8769b2acb6c1b9b64b330d0f76fc1.tar.gz
kernel-install: ignore extra args passed when invoked as installkernel
kernel's 'make install' invokes install.sh which calls /sbin/install-kernel. Thus we are invoked as e.g. /sbin/installkernel 5.18.0 arch/x86/boot/bzImage System.map /boot The last two arguments would be passed as "initrds". Before , we would just quitely ignore /boot, because it doesn't pass the 'test -f' test, and possibly try to do something with System.map. 742561efbe938c45936f2e4f5d81b3ff6b352882 tightened the check, so we now throw an error. It seems that the correct thing is to ignore those two arguments, because our plugin syntax has no notion of System.map. And the installation directory we can figure out ourselves better. Effectively, this makes things behave like before, but less by accident. Fixes #23490.
Diffstat (limited to 'src/kernel-install')
-rwxr-xr-xsrc/kernel-install/kernel-install.in15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/kernel-install/kernel-install.in b/src/kernel-install/kernel-install.in
index c6c74cc792..5f88ac2490 100755
--- a/src/kernel-install/kernel-install.in
+++ b/src/kernel-install/kernel-install.in
@@ -81,9 +81,11 @@ fi
if [ "${0##*/}" = "installkernel" ]; then
COMMAND=add
# make install doesn't pass any initrds
+ no_initrds=1
else
COMMAND="$1"
[ $# -ge 1 ] && shift
+ no_initrds=0
fi
if [ "$COMMAND" = "inspect" ]; then
@@ -321,8 +323,17 @@ case "$COMMAND" in
fi
for f in $PLUGINS; do
- [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $*"
- "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$@"
+ if [ "$no_initrds" = 1 ]; then
+ # kernel's install.sh invokes us as
+ # /sbin/installkernel <version> <vmlinuz> <map> <installation-dir>
+ # We ignore the last two arguments.
+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $1"
+ "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$1"
+ else
+ [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && echo "+$f add $KERNEL_VERSION $ENTRY_DIR_ABS $*"
+ "$f" add "$KERNEL_VERSION" "$ENTRY_DIR_ABS" "$@"
+ fi
+
err=$?
[ $err -eq $skip_remaining ] && break
ret=$(( ret + err ))