kernel-install: Only read cmdline from /proc/cmdline when not in container
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 29 Jul 2024 15:13:28 +0000 (17:13 +0200)
committerLuca Boccassi <bluca@debian.org>
Thu, 15 Aug 2024 12:08:37 +0000 (13:08 +0100)
If we're running from within a container, we're very likely not going
to want to use the kernel command line from /proc/cmdline, so let's add
a check to see if we're running from a container to decide whether we'll
use the kernel command line from /proc/cmdline.

(cherry picked from commit 35c01ec59e0c2e6bd06cb18ca2ff612c6a7ea35d)

src/kernel-install/90-loaderentry.install.in

index 4ef6aca169c1a70fcc879f236d51b29be0bf269c..79427684cc5c96e4481345c30f06ff92eedad533 100755 (executable)
@@ -79,8 +79,10 @@ elif [ -f /etc/kernel/cmdline ]; then
     BOOT_OPTIONS="$(tr -s "$IFS" ' ' </etc/kernel/cmdline)"
 elif [ -f /usr/lib/kernel/cmdline ]; then
     BOOT_OPTIONS="$(tr -s "$IFS" ' ' </usr/lib/kernel/cmdline)"
-else
+elif ! systemd-detect-virt --container --quiet; then
     BOOT_OPTIONS="$(tr -s "$IFS" '\n' </proc/cmdline | grep -ve '^BOOT_IMAGE=' -e '^initrd=' | tr '\n' ' ')"
+else
+    BOOT_OPTIONS=""
 fi
 
 BOOT_OPTIONS="${BOOT_OPTIONS% }"
@@ -194,7 +196,7 @@ mkdir -p "${LOADER_ENTRY%/*}" || {
         echo "machine-id $MACHINE_ID"
     fi
     [ -n "$SORT_KEY" ] && echo "sort-key   $SORT_KEY"
-    echo "options    $BOOT_OPTIONS"
+    [ -n "$BOOT_OPTIONS" ] && echo "options    $BOOT_OPTIONS"
     echo "linux      $KERNEL_ENTRY"
     [ -n "$DEVICETREE_ENTRY" ] && echo "devicetree $DEVICETREE_ENTRY"