Blame view

doc/README.efi 2.06 KB
1aa5e9365   Simon Glass   efi: Add a README...
1
2
3
4
5
  #
  # Copyright (C) 2015 Google, Inc
  #
  # SPDX-License-Identifier:	GPL-2.0+
  #
f3b5056c4   Heinrich Schuchardt   efi_loader: split...
6
  EFI on U-Boot
1aa5e9365   Simon Glass   efi: Add a README...
7
  =============
f3b5056c4   Heinrich Schuchardt   efi_loader: split...
8
9
  This document provides information about the implementation of the UEFI API [1]
  in U-Boot.
1aa5e9365   Simon Glass   efi: Add a README...
10

1aa5e9365   Simon Glass   efi: Add a README...
11

f3b5056c4   Heinrich Schuchardt   efi_loader: split...
12
  =========== Table of Contents ===========
1aa5e9365   Simon Glass   efi: Add a README...
13

f3b5056c4   Heinrich Schuchardt   efi_loader: split...
14
15
  Motivation
  How do I get it?
1aa5e9365   Simon Glass   efi: Add a README...
16
  Status
1aa5e9365   Simon Glass   efi: Add a README...
17
  Future work
1aa5e9365   Simon Glass   efi: Add a README...
18

1aa5e9365   Simon Glass   efi: Add a README...
19

f3b5056c4   Heinrich Schuchardt   efi_loader: split...
20
21
  Motivation
  ----------
996a18a71   Alexander Graf   efi_loader: Add R...
22

f3b5056c4   Heinrich Schuchardt   efi_loader: split...
23
  With this API support in place, you can run any UEFI payload (such as the Linux
996a18a71   Alexander Graf   efi_loader: Add R...
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
  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.
c7ae3dfdc   Simon Glass   efi: Add support ...
56
57
58
59
60
61
62
63
64
65
66
67
  
  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.
996a18a71   Alexander Graf   efi_loader: Add R...
68
69
70
71
72
73
74
75
76
77
78
79
80
  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
f3b5056c4   Heinrich Schuchardt   efi_loader: split...
81
82
  
  [1] http://uefi.org/