]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
kernel-install: fix detection of entry-token if $BOOT_ROOT is configured
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 19 May 2022 13:34:32 +0000 (15:34 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 20 May 2022 07:44:22 +0000 (09:44 +0200)
If $BOOT_ROOT is specified, but entry-token not, we'd skip the detection
altogether, effectively defaulting to entry-token=machine-id.
The case where $BOOT_ROOT was not specied, but entry-token was configured
was handled correctly.
This patch makes the handling of both symmetrical, i.e. will only set what
wasn't configured.

src/kernel-install/kernel-install.in

index 8ed9bfbb33c7c983c3fdeaafb1290ed005bb54f1..9fa12f6fe817a23330236541a39995cfb1e2aff5 100755 (executable)
@@ -170,11 +170,18 @@ fi
 #     $ENTRY_TOKEN can be any string that fits into a VFAT filename, though
 #     typically is just the machine ID.
 
-[ -z "$BOOT_ROOT" ] && for suff in $ENTRY_TOKEN_SEARCH; do
-    for pref in "/efi" "/boot" "/boot/efi"; do
+if [ -n "$BOOT_ROOT" ]; then
+    # If this was already configured, don't try to guess
+    BOOT_ROOT_SEARCH="$BOOT_ROOT"
+else
+    BOOT_ROOT_SEARCH="/efi /boot /boot/efi"
+fi
+
+for suff in $ENTRY_TOKEN_SEARCH; do
+    for pref in $BOOT_ROOT_SEARCH; do
         if [ -d "$pref/$suff" ]; then
-            BOOT_ROOT="$pref"
-            ENTRY_TOKEN="$suff"
+            [ -z "$BOOT_ROOT" ] && BOOT_ROOT="$pref"
+            [ -z "$ENTRY_TOKEN" ] && ENTRY_TOKEN="$suff"
 
             [ "$KERNEL_INSTALL_VERBOSE" -gt 0 ] && \
                 echo "$pref/$suff exists, using BOOT_ROOT=$BOOT_ROOT, ENTRY_TOKEN=$ENTRY_TOKEN"