u-boot/doc/README.efi
Heinrich Schuchardt f3b5056c4e efi_loader: split README.efi into two separate documents
README.efi describes two different concepts:
* U-Boot exposing the UEFI API
* U-Boot running on top of UEFI.

This patch splits the document in two.
Religious references are removed.

The separation of the concepts makes sense before detailing the internals
of U-Boot exposing the UEFI API in a future patch.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
2018-02-10 00:24:00 +01:00

86 lines
2.1 KiB
Text

#
# Copyright (C) 2015 Google, Inc
#
# SPDX-License-Identifier: GPL-2.0+
#
EFI on U-Boot
=============
This document provides information about the implementation of the UEFI API [1]
in U-Boot.
=========== Table of Contents ===========
Motivation
How do I get it?
Status
Future work
Motivation
----------
With this API support in place, you can run any UEFI payload (such as the Linux
kernel, grub2 or gummiboot) on U-Boot. This dramatically simplifies boot loader
configuration, as U-Boot based systems now look and feel (almost) the same way
as TianoCore based systems.
How do I get it?
----------------
EFI support for 32bit ARM and AArch64 is already included in U-Boot. All you
need to do is enable
CONFIG_CMD_BOOTEFI=y
CONFIG_EFI_LOADER=y
in your .config file and you will automatically get a bootefi command to run
an efi application as well as snippet in the default distro boot script that
scans for removable media efi binaries as fallback.
Status
------
I am successfully able to run grub2 and Linux EFI binaries with this code on
ARMv7 as well as AArch64 systems.
When enabled, the resulting U-Boot binary only grows by ~10KB, so it's very
light weight.
All storage devices are directly accessible from the uEFI payload
Removable media booting (search for /efi/boot/boota{a64,arm}.efi) is supported.
Simple use cases like "Plug this SD card into my ARM device and it just
boots into grub which boots into Linux", work very well.
Running HelloWord.efi
---------------------
You can run a simple 'hello world' EFI program in U-Boot.
Enable the option CONFIG_CMD_BOOTEFI_HELLO.
Then you can boot into U-Boot and type:
> bootefi hello
The 'hello world EFI' program will then run, print a message and exit.
Future work
-----------
Of course, there are still a few things one could do on top:
- Improve disk media detection (don't scan, use what information we
have)
- Add EFI variable support using NVRAM
- Add GFX support
- Make EFI Shell work
- Network device support
- Support for payload exit
- Payload Watchdog support
[1] http://uefi.org/