AKASHI Takahiro 4e65ca00f3 efi_loader: bootmgr: add booting from removable media
Under the current implementation, booting from removable media using
a architecture-specific default image name, say BOOTAA64.EFI, is
supported only in distro_bootcmd script. See the commit 74522c898b35
("efi_loader: Add distro boot script for removable media").

This is, however, half-baked implementation because
1) UEFI specification requires this feature to be implemented as part
   of Boot Manager's responsibility:

  3 - Boot Manager
  3.5.1 Boot via the Simple File Protocol
  When booting via the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, the FilePath will
  start with a device path that points to the device that implements the
  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL or the EFI_BLOCK_IO_PROTOCOL. The next
  part of the FilePath may point to the file name, including
  subdirectories, which contain the bootable image. If the file name is
  a null device path, the file name must be generated from the rules
  defined below.
  ...
  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 ...

2) So (1) entails the hehavior that the user's preference of boot media
   order should be determined by Boot#### and BootOrder variables.

With this patch, the semantics mentioned above is fully implemented.
For example, if you want to boot the system from USB and SCSI in this
order,
* define Boot0001 which contains only a device path to the USB device
  (without any file path/name)
* define Boot0002 which contains only a device path to the SCSI device,
and
* set BootOrder to Boot0001:Boot0002

To avoid build error for sandbox, default file name "BOOTSANDBOX.efi"
is defined even if it is out of scope of UEFI specification.

Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
On sandbox use binary name corresponding to host architecture.
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2022-05-03 21:39:22 +02:00
..
2022-01-18 08:31:02 -05:00
2022-05-03 21:39:22 +02:00
2022-04-06 14:01:42 -04:00
2022-01-19 18:11:34 +01:00
2021-01-16 19:17:11 -05:00
2020-05-18 21:19:18 -04:00
2022-01-19 18:11:34 +01:00
2019-12-02 18:23:07 -05:00
2019-10-31 07:22:53 -04:00
2022-04-25 16:04:05 -04:00
2020-10-30 10:56:11 -04:00
2021-10-08 15:53:26 -04:00
2021-09-04 12:26:01 -04:00
2022-05-03 21:39:22 +02:00
2022-03-15 16:19:29 -04:00
2021-09-16 10:29:40 -04:00
2022-01-19 18:11:34 +01:00
2019-12-06 16:44:20 -05:00
2020-05-18 21:19:18 -04:00
2021-07-14 16:57:35 -04:00
2020-05-18 21:19:18 -04:00
2020-08-24 14:11:31 -04:00
2021-10-08 15:53:26 -04:00
2021-03-02 15:53:37 -05:00
2021-07-15 18:42:05 -04:00
2022-01-19 18:11:34 +01:00
2019-05-05 08:48:50 -04:00