From 47e9b73954259e4cf9ba07a4c793a26fbdb47bce Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 5 Aug 2025 07:46:14 +0200 Subject: efi_loader: Support loading a ramdisk with bootefi It is sometimes useful to be able to boot via EFI using a Linux initrd. Add support for this. Fix a 'specifiy' typo while here. Signed-off-by: Simon Glass Reviewed-by: Heinrich Schuchardt Reviewed-by: Mark Kettenis Reviewed-by: Ilias Apalodimas --- doc/usage/cmd/bootefi.rst | 37 ++++++++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 7 deletions(-) (limited to 'doc/usage/cmd') diff --git a/doc/usage/cmd/bootefi.rst b/doc/usage/cmd/bootefi.rst index d6e4e62e383..7c5448586b7 100644 --- a/doc/usage/cmd/bootefi.rst +++ b/doc/usage/cmd/bootefi.rst @@ -12,7 +12,7 @@ Synopsis :: - bootefi [:] [] + bootefi [:] [:] [] bootefi bootmgr [] bootefi hello [] bootefi selftest [] @@ -44,6 +44,16 @@ command sequence to run a UEFI application might look like load mmc 0:1 $kernel_addr_r /EFI/grub/grubaa64.efi bootefi $kernel_addr_r $fdt_addr_r +or + +:: + + setenv bootargs root=/dev/vda1 + load mmc 0:1 $fdt_addr_r dtb + load mmc 0:1 $kernel_addr_r vmlinux + load mmc 0:1 $initrd_addr_r intird + bootefi $kernel_addr_r $initrd_addr_r:$filesize $fdt_addr_r + The last UEFI binary loaded defines the image file path in the loaded image protocol. @@ -51,21 +61,34 @@ The value of the environment variable *bootargs* is converted from UTF-8 to UTF-16 and passed as load options in the loaded image protocol to the UEFI binary. +.. note:: + + The bootefi command accepts one to three arguments. + If the second argument contains a colon ':', it is assumed to specify the + initial RAM disk. + image_addr Address of the UEFI binary. -fdt_addr - Address of the device-tree or '-'. If no address is specifiy, the - environment variable $fdt_addr is used as first fallback, the address of - U-Boot's internal device-tree $fdtcontroladdr as second fallback. - When using ACPI no device-tree shall be specified. - image_size Size of the UEFI binary file. This argument is only needed if *image_addr* does not match the address of the last loaded UEFI binary. In this case a memory device path will be used as image file path in the loaded image protocol. +initrd_addr + Address of the Linux initial RAM disk or '-'. If no address is specified, + no RAM disk is used when booting. + +initrd_size + Size of the Linux initial RAM disk. + +fdt_addr + Address of the device-tree or '-'. If no address is specified, the + environment variable $fdt_addr is used as first fallback, the address of + U-Boot's internal device-tree $fdtcontroladdr as second fallback. + When using ACPI no device-tree shall be specified. + Note UEFI binaries that are contained in FIT images are launched via the *bootm* command. -- cgit v1.3.1