]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
bootctl: show whether a PE file is an addon in 'booctl kernel-identify'
authorLennart Poettering <lennart@poettering.net>
Tue, 16 Jul 2024 09:27:19 +0000 (11:27 +0200)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 16 Sep 2024 01:41:10 +0000 (10:41 +0900)
man/bootctl.xml
src/shared/kernel-image.c
src/shared/kernel-image.h

index f6218519c47e4cd596a5d768869fc28745401506..57455f2dacb96c267c7328bcd43d4eb7b7d1d9aa 100644 (file)
         <term><option>kernel-identify</option> <replaceable>kernel</replaceable></term>
 
         <listitem><para>Takes a kernel image as argument. Checks what kind of kernel the image is. Returns
-        one of <literal>uki</literal>, <literal>pe</literal>, and <literal>unknown</literal>.
+        one of <literal>uki</literal>, <literal>addon</literal>, <literal>pe</literal>, and
+        <literal>unknown</literal>.
         </para>
 
         <xi:include href="version-info.xml" xpointer="v253"/></listitem>
index 4230d012be940ef3db14cd5dd8da80fadffd7a7e..57e851fa543a0c1e2e45bd0caf485f494277dec0 100644 (file)
@@ -14,6 +14,7 @@
 static const char * const kernel_image_type_table[_KERNEL_IMAGE_TYPE_MAX] = {
         [KERNEL_IMAGE_TYPE_UNKNOWN] = "unknown",
         [KERNEL_IMAGE_TYPE_UKI]     = "uki",
+        [KERNEL_IMAGE_TYPE_ADDON]   = "addon",
         [KERNEL_IMAGE_TYPE_PE]      = "pe",
 };
 
@@ -159,6 +160,16 @@ int inspect_kernel(
 
                 t = KERNEL_IMAGE_TYPE_UKI;
                 goto done;
+        } else if (pe_is_addon(pe_header, sections)) {
+                r = inspect_uki(fd, pe_header, sections, ret_cmdline, ret_uname, /* ret_pretty_name= */ NULL);
+                if (r < 0)
+                        return r;
+
+                if (ret_pretty_name)
+                        *ret_pretty_name = NULL;
+
+                t = KERNEL_IMAGE_TYPE_ADDON;
+                goto done;
         } else
                 t = KERNEL_IMAGE_TYPE_PE;
 
index 41b2c08f9a6ea410f78f515ca9b4ebcfcf49db66..e9526e87eba850a2e2195e5c1ff924b60cf34d3c 100644 (file)
@@ -8,6 +8,7 @@
 typedef enum KernelImageType {
         KERNEL_IMAGE_TYPE_UNKNOWN,
         KERNEL_IMAGE_TYPE_UKI,
+        KERNEL_IMAGE_TYPE_ADDON,
         KERNEL_IMAGE_TYPE_PE,
         _KERNEL_IMAGE_TYPE_MAX,
         _KERNEL_IMAGE_TYPE_INVALID = -EINVAL,