[U-Boot] [PATCH v2 00/21] efi_loader: enough UEFI for standard distro boot

Rob Clark robdclark at gmail.com
Sun Sep 10 11:38:14 UTC 2017


Blerg.. pls ignore the resend of "readdir" patchset which hitched a
ride on the git-send-email train.. apparently I should not send
patches in the morning before coffee..

BR,
-R

On Sun, Sep 10, 2017 at 7:21 AM, Rob Clark <robdclark at gmail.com> wrote:
> This patchset fleshes out EFI_LOADER enough to support booting an
> upstream \EFI\BOOT\bootaa64.efi (which then loads fallback.efi and
> then eventually the per-distro shim.efi which loads the per-distro
> grubaa64.efi) without resorting to hacks to hard-code u-boot to load
> a particular distro's grub, or other hacks like setting up the
> distro installation as live-media.
>
> Background: with a normal UEFI implementation, the boot process is:
>
> a) firmware (u-boot) looks at BootOrder and the BootXXXX variables
>    to try to determine what to boot.
> b) the firmware will look at the BootXXXX variables (which contain
>    an EFI_LOAD_OPTION "struct" in order specified by BootOrder, and
>    will boot the first bootable option.
> c) The EFI_LOAD_OPTION specifies a device-path which identifies the
>    device and file path of the .efi payload to exectute.
>
> This is implemented with the 'bootefi bootmgr' command.
>
> If there are no bootable options the firmware falls back to loading
> \EFI\BOOT\bootaa64.efi (exact name varies depending on arch), which
> for distro's using fallback/shim (which should include most modern
> linux distros) then loads fallback.efi which uses the
> EFI_SIMPLE_FILE_SYSTEM_PROTCOL and EFI_FILE_PROTOCOL to search for
> any \EFI\*\boot.csv, and will then set BootOrder and BootXXXX EFI
> variables accordingly so that on next boot fallback.efi is not
> necessary.
>
> The last 5 patches are a bit unrelated, just pulling forward some of
> the patches I have from the next patchset, to get Shell.efi and SCT
> working.
>
> Peter Jones (2):
>   part: extract MBR signature from partitions
>   efi: add some more device path structures
>
> Rob Clark (19):
>   part: move efi_guid_t
>   efi: add some missing __packed
>   efi_loader: add device-path utils
>   efi_loader: drop redundant efi_device_path_protocol
>   efi_loader: flesh out device-path to text
>   efi_loader: use proper device-paths for partitions
>   efi_loader: use proper device-paths for net
>   efi_loader: refactor boot device and loaded_image handling
>   efi_loader: add file/filesys support
>   efi_loader: support load_image() from a file-path
>   efi_loader: make pool allocations cacheline aligned
>   efi_loader: efi variable support
>   efi_loader: add bootmgr
>   efi_loader: file_path should be variable length
>   efi_loader: set loaded image code/data type properly
>   efi_loader: print GUIDs
>   efi_loader: split out escape sequence based size query
>   efi_loader: Correctly figure out size for vidconsole
>   efi_loader: Some console improvements for vidconsole
>
>  cmd/bootefi.c                            | 249 ++++++--------
>  disk/part_dos.c                          |  12 +-
>  disk/part_efi.c                          |  20 ++
>  include/blk.h                            |  15 +
>  include/config_distro_bootcmd.h          |   5 +
>  include/efi.h                            |  25 ++
>  include/efi_api.h                        | 162 ++++++++-
>  include/efi_loader.h                     |  62 +++-
>  include/part.h                           |   3 +-
>  include/part_efi.h                       |   4 -
>  include/pe.h                             |   6 +
>  lib/efi_loader/Makefile                  |   3 +-
>  lib/efi_loader/efi_bootmgr.c             | 169 ++++++++++
>  lib/efi_loader/efi_boottime.c            | 162 +++++++--
>  lib/efi_loader/efi_console.c             | 123 ++++---
>  lib/efi_loader/efi_device_path.c         | 563 +++++++++++++++++++++++++++++++
>  lib/efi_loader/efi_device_path_to_text.c | 242 +++++++++----
>  lib/efi_loader/efi_disk.c                |  86 +++--
>  lib/efi_loader/efi_file.c                | 556 ++++++++++++++++++++++++++++++
>  lib/efi_loader/efi_image_loader.c        |  26 ++
>  lib/efi_loader/efi_memory.c              |   5 +-
>  lib/efi_loader/efi_net.c                 |  24 +-
>  lib/efi_loader/efi_runtime.c             |  17 +-
>  lib/efi_loader/efi_variable.c            | 335 ++++++++++++++++++
>  24 files changed, 2520 insertions(+), 354 deletions(-)
>  create mode 100644 lib/efi_loader/efi_bootmgr.c
>  create mode 100644 lib/efi_loader/efi_device_path.c
>  create mode 100644 lib/efi_loader/efi_file.c
>  create mode 100644 lib/efi_loader/efi_variable.c
>
> --
> 2.13.5
>


More information about the U-Boot mailing list