mbox series

[RFC,0/3] efi_loader: bootmgr itself should support removable media

Message ID 20211109013233.72902-1-takahiro.akashi@linaro.org
Headers show
Series efi_loader: bootmgr itself should support removable media | expand

Message

AKASHI Takahiro Nov. 9, 2021, 1:32 a.m. UTC
# This task is a bit motivated by Simon's discussion about bootflow[1].

Booting UEFI system from removable media is currently supported by
distro_bootcmd script. But the behavior should be best implemented
in UEFI Boot Manager.
(Historically, the boot manager was added later than the support for
removable media boot. So it is a matter of integration.)

Here, "removable media" support means:
  3.5.1.1 Removable Media Boot Behavior
  To generate a file name when none is present in the FilePath,
  the firmware must append a default file name in the form
  \EFI\BOOT\BOOT{machine type short-name}.EFI where machine type
  short-name defines a PE32+ image format architecture.

With this patch set applied, the boot media order can also be defined
by "BooOrder" variable, which the UEFI specification expects.
You can find an example command usage in patch#3.

Please note that this ehnancement improves the compliance to the
specification and that it won't hurt any backward compatibility,
if you don't want to use this feature, as long as a removable-related
script in distro_bootcmd remains unchanged.

The restriction (or drawback?) here is that we need to run all the "scan"
commands before invoking the boot manager.

[1] https://lists.denx.de/pipermail/u-boot/2021-August/458384.html

RFC (Nov 09, 2021)
* initial proposal

AKASHI Takahiro (3):
  efi_loader: export efi_locate_device_handle()
  efi_loader: bootmgr: add booting from removable media
  cmd: efidebug: handle booting from removable media

 cmd/efidebug.c                | 46 +++++++++++++++++++++----
 include/efi_loader.h          |  4 +++
 lib/efi_loader/efi_bootmgr.c  | 65 ++++++++++++++++++++++++++++++++++-
 lib/efi_loader/efi_boottime.c |  7 ++--
 4 files changed, 111 insertions(+), 11 deletions(-)