]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
stub: Read extra kernel command line items from SMBIOS
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 30 Jan 2023 15:26:50 +0000 (16:26 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 23 Feb 2023 08:51:18 +0000 (09:51 +0100)
Let's read more kernel command line arguments from SMBIOS OEM string
io.systemd.stub.kernel-cmdline-extra. This allows adding debug kernel
command line arguments when booting in qemy without having to modify
the UKI.

man/systemd-stub.xml
src/boot/efi/stub.c

index c2301687806ef4d2c190234fd30f095619dc1348..7934f344f86446770f21e3552ca4557a6976d7e2 100644 (file)
     default, this is done for the TPM2 PCR signature and public key files.</para>
   </refsect1>
 
+  <refsect1>
+    <title>SMBIOS Type 11 Strings</title>
+
+    <para><command>systemd-stub</command> can be configured using SMBIOS Type 11 strings. Applicable strings
+    consist of a name, followed by <literal>=</literal>, followed by the value.
+    <command>systemd-stub</command> will search the table for a string with a specific name, and if found,
+    use its value. The following strings are read:</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><varname>io.systemd.stub.kernel-cmdline-extra</varname></term>
+        <listitem><para>If set, the value of this string is added to the list of kernel command line
+        arguments that are passed to the kernel.</para></listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+
   <refsect1>
     <title>Assembling Kernel Images</title>
 
index d85424ceaeb244620f2d69721b6b8bb0aa25a337..25fd1bdb7fa2347c76c7f0192f51793da28ae29c 100644 (file)
@@ -14,6 +14,7 @@
 #include "splash.h"
 #include "tpm-pcr.h"
 #include "util.h"
+#include "vmm.h"
 
 /* magic string to find in the binary image */
 _used_ _section_(".sdmagic") static const char magic[] = "#### LoaderInfo: systemd-stub " GIT_VERSION " ####";
@@ -275,6 +276,12 @@ static EFI_STATUS run(EFI_HANDLE image) {
                 mangle_stub_cmdline(cmdline);
         }
 
+        const char *extra = smbios_find_oem_string("io.systemd.stub.kernel-cmdline-extra");
+        if (extra) {
+                _cleanup_free_ char16_t *tmp = TAKE_PTR(cmdline), *extra16 = xstr8_to_16(extra);
+                cmdline = xasprintf("%ls %ls", tmp, extra16);
+        }
+
         export_variables(loaded_image);
 
         if (pack_cpio(loaded_image,