Skip to content

Commit

Permalink
kernel-install: ignore extra args passed when invoked as installkernel
Browse files Browse the repository at this point in the history
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. 742561e 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.
  • Loading branch information
keszybz committed May 24, 2022
1 parent 9e03f48 commit 620ecc9
Showing 1 changed file with 13 additions and 2 deletions.
15 changes: 13 additions & 2 deletions src/kernel-install/kernel-install.in
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 ))
Expand Down

0 comments on commit 620ecc9

Please sign in to comment.