2022-11-15 06:58:41 +00:00
|
|
|
From 5eb855bddaf8270e7274132ded0e36325d8ffbbe Mon Sep 17 00:00:00 2001
|
2022-05-17 10:28:40 +00:00
|
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
|
|
Date: Wed, 9 Feb 2022 14:44:48 +0100
|
|
|
|
Subject: [PATCH] kernel-install: only generate systemd.boot_id= in kernel
|
|
|
|
command line if used for naming the boot loader spec files/dirs
|
|
|
|
|
|
|
|
Now that we can distinguish the naming of the boot loader spec
|
|
|
|
dirs/files and the machine ID let's tweak the logic for suffixing the
|
|
|
|
kernel cmdline with systemd.boot_id=: let's only do that when we
|
|
|
|
actually need the boot ID for naming these dirs/files. If we don't,
|
|
|
|
let's not bother.
|
|
|
|
|
|
|
|
This should be beneficial for "golden" images that shall not carry any
|
|
|
|
machine IDs at all, i.e acquire their identity only once the final
|
|
|
|
userspace is actually reached.
|
|
|
|
|
|
|
|
(cherry picked from commit 953b61004c37948dcd897265b56c1613bc73b9f9)
|
|
|
|
|
|
|
|
Related: #2065061
|
|
|
|
---
|
|
|
|
src/kernel-install/90-loaderentry.install | 18 +++++++++++++-----
|
|
|
|
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install
|
|
|
|
index 46261a2c11..c1d69aa824 100644
|
|
|
|
--- a/src/kernel-install/90-loaderentry.install
|
|
|
|
+++ b/src/kernel-install/90-loaderentry.install
|
|
|
|
@@ -70,10 +70,15 @@ else
|
|
|
|
BOOT_OPTIONS="$(tr -s "$IFS" '\n' </proc/cmdline | grep -ve '^BOOT_IMAGE=' -e '^initrd=' | tr '\n' ' ')"
|
|
|
|
fi
|
|
|
|
|
|
|
|
-# Suffix with the machine ID we use, so that the machine ID remains stable,
|
|
|
|
-# even during factory reset, in the initrd (where the system's machine ID is
|
|
|
|
-# not directly accessible yet), and if the root file system is volatile.
|
|
|
|
-BOOT_OPTIONS="${BOOT_OPTIONS% } systemd.machine_id=$MACHINE_ID"
|
|
|
|
+BOOT_OPTIONS="${BOOT_OPTIONS% }"
|
|
|
|
+
|
|
|
|
+# If the boot entries are named after the machine ID, then suffix the kernel
|
|
|
|
+# command line with the machine ID we use, so that the machine ID remains
|
|
|
|
+# stable, even during factory reset, in the initrd (where the system's machine
|
|
|
|
+# ID is not directly accessible yet), and if the root file system is volatile.
|
|
|
|
+if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ]; then
|
|
|
|
+ BOOT_OPTIONS="$BOOT_OPTIONS systemd.machine_id=$MACHINE_ID"
|
|
|
|
+fi
|
|
|
|
|
|
|
|
if [ -r /etc/kernel/tries ]; then
|
|
|
|
read -r TRIES </etc/kernel/tries
|
|
|
|
@@ -121,7 +126,10 @@ mkdir -p "${LOADER_ENTRY%/*}" || {
|
|
|
|
{
|
|
|
|
echo "title $PRETTY_NAME"
|
|
|
|
echo "version $KERNEL_VERSION"
|
|
|
|
- echo "machine-id $MACHINE_ID"
|
|
|
|
+ if [ "$ENTRY_TOKEN" = "$MACHINE_ID" ]; then
|
|
|
|
+ # See similar logic above for the systemd.machine_id= kernel command line option
|
|
|
|
+ echo "machine-id $MACHINE_ID"
|
|
|
|
+ fi
|
|
|
|
echo "options $BOOT_OPTIONS"
|
|
|
|
echo "linux $ENTRY_DIR/linux"
|
|
|
|
|