diff options
author | Kir Kolyshkin <kolyshkin@gmail.com> | 2020-07-31 19:24:15 -0700 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-08-03 10:01:03 +0200 |
commit | 1cdbff1c844ce46f1d84d8feeed426ebfd550988 (patch) | |
tree | 6e072c431dd357cd67c6d3da79424400daeda209 /src/kernel-install/90-loaderentry.install | |
parent | 6f646e01755df587bb33dae4ca78cdaad5721f5e (diff) | |
download | systemd-1cdbff1c844ce46f1d84d8feeed426ebfd550988.tar.gz |
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 <kolyshkin@gmail.com>
Diffstat (limited to 'src/kernel-install/90-loaderentry.install')
-rw-r--r-- | src/kernel-install/90-loaderentry.install | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install index 6c0e27ba3a..97fc3bcc35 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" |