From: Kir Kolyshkin Date: Sat, 1 Aug 2020 02:24:15 +0000 (-0700) Subject: kernel-install/90-loaderentry: fix when /boot is not mountpoint X-Git-Tag: v247-rc1~469 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1cdbff1c844ce46f1d84d8feeed426ebfd550988;p=thirdparty%2Fsystemd.git kernel-install/90-loaderentry: fix when /boot is not mountpoint I happen to have a machine where /boot is not a separate mountpoint, but rather just a directory under /. After upgrade to recent Fedora, I found out that grub2 can't find any new kernels. This happens because loadentry script generates kernel and initrd file paths relative to /boot, while grub2 expects path to be relative to the root of filesystem on which they are residing. This commit fixes this issue by using stat's %m to find the mount point of a partition holding the images, and using it as a prefix to be removed from ENTRY_DIR_ABS. Note that %m for stat requires coreutils 8.6, released in Oct 2010. Signed-off-by: Kir Kolyshkin --- diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install index 6c0e27ba3a6..97fc3bcc352 100644 --- a/src/kernel-install/90-loaderentry.install +++ b/src/kernel-install/90-loaderentry.install @@ -18,8 +18,9 @@ fi MACHINE_ID=$KERNEL_INSTALL_MACHINE_ID -ENTRY_DIR="/$MACHINE_ID/$KERNEL_VERSION" -BOOT_ROOT=${ENTRY_DIR_ABS%$ENTRY_DIR} +BOOT_ROOT=${ENTRY_DIR_ABS%/$MACHINE_ID/$KERNEL_VERSION} +BOOT_MNT=$(stat -c %m $BOOT_ROOT) +ENTRY_DIR=/${ENTRY_DIR_ABS#$BOOT_MNT} if [[ $COMMAND == remove ]]; then rm -f "$BOOT_ROOT/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf"