mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	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>
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
#
 | 
						|
# 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/
 |