[PATCH v1 07/14] efi: loader: bootm: pass the kernel command line to UKIs

Johannes Schneider johannes.schneider at leica-geosystems.com
Sat Oct 3 18:19:40 PDT 2026


Only Linux EFI images get the barebox kernel command line as load
options. A UKI is a plain EFI application, so root=, bootchooser.active=
and the other bootargs never reach its kernel. Pass them to every image
with a .linux section too: systemd-stub uses the load options as kernel
command line unless UEFI Secure Boot is enabled, which barebox never
reports.

Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Johannes Schneider <johannes.schneider at leica-geosystems.com>
---
 efi/loader/bootm.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/efi/loader/bootm.c b/efi/loader/bootm.c
index 18539565fd..8a83865458 100644
--- a/efi/loader/bootm.c
+++ b/efi/loader/bootm.c
@@ -252,7 +252,7 @@ static int efi_loader_bootm(struct image_data *data)
 	int ret = 0;
 	void *fdt;
 	int flags = 0;
-	size_t size;
+	size_t size, section_size;
 
 	memory_bank_first_find_space(&start, &end);
 
@@ -266,7 +266,10 @@ static int efi_loader_bootm(struct image_data *data)
 		return -EINVAL;
 	}
 
-	if (filetype_is_linux_efi_image(data->kernel_type)) {
+	/* systemd-stub passes the load options on as kernel command line */
+	if (filetype_is_linux_efi_image(data->kernel_type) ||
+	    efi_pe_find_section((void *)os_res->start, size, ".linux",
+				&section_size)) {
 		const char *options;
 
 		options = linux_bootargs_get();
-- 
2.43.0




More information about the barebox mailing list