Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ......

160
Marrying U-Boot, UEFI and grub

Transcript of Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ......

Page 1: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Marrying U-Boot, UEFI and grub

Page 2: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

About Me

• Alexander Graf

• KVM and QEMU developer for SUSE

• Server class PowerPC KVM port

• Nested SVM

• Founding member of SUSE ARM team

Page 3: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Booting on ARM

Page 4: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Boot ROM

Booting on ARM

Page 5: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware FlashBoot ROM

Booting on ARM

Page 6: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware FlashBoot ROM SD / USB / etc

Booting on ARM

custom extlinux vboot UEFI

Page 7: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

Firmware FlashBoot ROM SD / USB / etc

Ideal Distro boot flow

custom extlinux vboot UEFI

Page 8: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

Firmware FlashBoot ROM SD / USB / etc

Ideal Distro boot flow

One protocol torule them all

Page 9: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

Page 10: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

UEFI

Page 11: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

UEFI NVRAM

Page 12: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

UEFI NVRAM

sda2/foo.efi

mmc0/bar.efi

eth0/dhcp4

Page 13: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

NVRAM

sda2/foo.efi

mmc0/bar.efi

eth0/dhcp4

UEFI

Page 14: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

NVRAM

sda2/foo.efi

mmc0/bar.efi

eth0/dhcp4

✗UEFI

Page 15: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

NVRAM

sda2/foo.efi

mmc0/bar.efi

eth0/dhcp4

✗UEFI

Page 16: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

NVRAM

sda2/foo.efi

mmc0/bar.efi

eth0/dhcp4

UEFI

Page 17: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

Removable

NVRAMUEFI

Page 18: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

mmc0/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

UEFI

Page 19: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

mmc0/ESP/efi/boot/bootaa64.efi

UEFI

Page 20: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

✗mmc0/ESP/efi/

boot/bootaa64.efiUEFI

Page 21: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

mmc0/ESP/efi/boot/bootaa64.efi

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

✗UEFI

Page 22: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

mmc0/ESP/efi/boot/bootaa64.efi

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

UEFI

Page 23: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

mmc0/ESP/efi/boot/bootaa64.efi

UEFI boot flow

Removable

NVRAM

sda/ESP/efi/boot/bootaa64.efi

cd0/eltorito/efi/boot/bootaa64.efi

✔bootaa64.efi

UEFI

Page 24: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

bootaa64.efiUEFI

Page 25: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

bootaa64.efi

EFI Runtime Data

Console Boot Services

Runtime Services Tables

UEFI

Page 26: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

bootaa64.efi

EFI Runtime Data

Console

Runtime Services Tables

UEFI

Boot Services

Page 27: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow

bootaa64.efiUEFI

Boot Services

Page 28: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

btrfs

UEFI boot flow

bootaa64.efiUEFI

Boot Services

Page 29: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

btrfs

UEFI boot flow

bootaa64.efiUEFI

Boot Services

Page 30: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

btrfs

UEFI boot flow

bootaa64.efiUEFI

Boot Services

Page 31: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

btrfs

UEFI boot flow

bootaa64.efi

✗✗UEFI

Boot Services

Page 32: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flowRuntime Services

NVRAMUEFI

Page 33: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow advantages

Page 34: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow advantages

UEFI

Page 35: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

UEFI boot flow advantages

UEFI

Page 36: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

UEFI boot flow advantages

UEFI

Page 37: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

UEFI boot flow advantages

UEFIbtrfs

Page 38: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

zfs

Firmware, do not care

UEFI boot flow advantages

UEFIbtrfs

Page 39: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

ext4 extension 593

zfs

Firmware, do not care

UEFI boot flow advantages

UEFIbtrfs

Page 40: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

ext4 extension 593

zfs

Firmware, do not care

UEFI boot flow advantages

btrfs

UEFI

Page 41: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Firmware, do not care

UEFI boot flow advantages

UEFI

Page 42: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI boot flow advantages

Page 43: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow
Page 44: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow
Page 45: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

Page 46: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U

EFI_STATUS EFIAPI GetNextMonotonicCount ( OUT UINT64 *Count ) { if (Count == NULL) { return EFI_INVALID_PARAMETER; }

*Count = gCurrentMonotonicCount++; return EFI_SUCCESS; }

Page 47: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

static efi_status_t EFIAPI efi_get_next_monotonic_count(uint64_t *count) { static uint64_t mono = 0; EFI_ENTRY("%p", count); *count = mono++; return EFI_EXIT(EFI_SUCCESS); }

U-Boot

Page 48: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U

Page 49: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U

UEFI

Page 50: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U

Page 51: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U

Black Boxes

Page 52: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

Page 53: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

Monolithic

Page 54: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

Page 55: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

core

Page 56: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

coreBBB

Page 57: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

coreBBB

OpenPlatform

Page 58: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

coreBBB

OpenPlatform

$ grep -R ARM configs/ | wc -l

684

Page 59: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot

Foundation for black box modules Monolithic, GPL

Windows coding style Linux coding style

Built to fork Built to include

Page 60: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 61: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 62: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 63: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 64: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

u32 block_size u64 last_block char read_only

read_blocks() write_blocks()

Page 65: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

u8 mac_address[32] u8 ip_address[16] u8 media_present

transmit() receive()

Page 66: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot interfaces

Page 67: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

U-Boot interfaces

ulong blksz u64 lba

char removable

blk_dread() blk_dwrite()

eth_get_ethaddr() net_send_packet()

eth_rx()

Page 68: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 69: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

Page 70: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI interfaces

efi_loader

Page 71: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

efi_loader

Page 72: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

efi_loader

bootefi

Page 73: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

Page 74: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

Page 75: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

Page 76: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

U-Boot> load mmc 0:1 $kernel_addr_r Image

Page 77: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

U-Boot> load mmc 0:1 $kernel_addr_r Image reading Image 568320 bytes read in 165 ms (3.3 MiB/s)

Page 78: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

U-Boot> bootefi $kernel_addr_r $fdt_addr_r

Page 79: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

U-Boot> bootefi $kernel_addr_r $fdt_addr_r ## Starting EFI application at 0x01000000 … EFI stub: Booting Linux Kernel... EFI stub: UEFI Secure Boot is enabled. EFI stub: Using DTB from configuration table EFI stub: Exiting boot services and installing virtual address map...

Page 80: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

U-Boot> bootefi $kernel_addr_r $fdt_addr_r ## Starting EFI application at 0x01000000 … EFI stub: Booting Linux Kernel... EFI stub: UEFI Secure Boot is enabled. EFI stub: Using DTB from configuration table EFI stub: Exiting boot services and installing virtual address map...

Page 81: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

Page 82: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

Page 83: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

bootefi

KASLR

Page 84: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

efi_loader

bootefi

Page 85: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

efi_loader

bootefi

distro boot

Page 86: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

distro boot

Page 87: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

distro boot

boot_targets=mmc0 usb0 pxe dhcp

Page 88: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

distro boot

boot_targets=mmc0 usb0 pxe dhcp

extlinux

Page 89: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

distro boot

boot_targets=mmc0 usb0 pxe dhcp

extlinux

boot.script

Page 90: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

distro boot

boot_targets=mmc0 usb0 pxe dhcp

extlinux

boot.script

EFI

Page 91: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Page 92: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Page 93: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Partition Table

ESP

Page 94: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP $fdtfile

Page 95: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP

$fdtfile

/

/dtb/

/dtb/current/

/boot/

/boot/dtb/

/boot/dtb/current/

Page 96: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP

$fdtfile

efi/boot/bootaa64.efi

Page 97: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP

$fdtfile

Page 98: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP

$fdtfile

Page 99: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ESP

$fdtfile

Page 100: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Page 101: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Page 102: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

Page 103: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ISO9660el torito

Page 104: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

ISO9660el torito el torito

Page 105: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Partition Table

EFI

distro boot

el torito el torito

Page 106: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Partition Table

EFI

distro boot

el torito

$fdtfile

el torito

Page 107: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

✔ ✔

Page 108: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

DHCP Distro Boot

Page 109: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

DHCP Distro Boot DHCP Server

Page 110: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

DHCP Distro Boot DHCP Server

DHCP req

Page 111: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI & Arch VCI

EFI

distro boot

DHCP Distro Boot DHCP Server

DHCP req

Page 112: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

filename

EFI & Arch VCI

EFI

distro boot

DHCP Distro Boot DHCP Server

DHCP req

DHCP ack

Page 113: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

TFTP

filename

EFI & Arch VCI

EFI

distro boot

DHCP Distro Boot DHCP Server

DHCP req

DHCP ack

Page 114: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

EFI

distro boot

✔ ✔ ✔

Page 115: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI Tables

Page 116: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI Tables

bootaa64.efi

EFI Runtime Data

Console Boot Services

Runtime Services

UEFI

Tables

Page 117: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI TablesTables

Page 118: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI TablesTables

ACPI

Page 119: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI TablesTables

ACPI✗

Page 120: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI TablesTables

ACPI✗

Page 121: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

UEFI Tables

Tables

Page 122: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

Page 123: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

NVRAM

Page 124: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

NVRAM

Page 125: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

NVRAM

UEFI RTS

Page 126: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

NVRAM

UEFI RTS

Page 127: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

NVRAM

UEFI RTS

✗✗

Page 128: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

Page 129: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

init

Page 130: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

init

Page 131: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

init

Page 132: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

bootefi

Page 133: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

bootefi

Page 134: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

bootefi

Page 135: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

Page 136: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

Page 137: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

EFI Shell

Page 138: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

EFI Shell

Page 139: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Missing Features

EFI Shell✗

Page 140: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

Page 141: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

Page 142: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?Department A Department B

Page 143: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 144: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 145: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 146: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 147: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 148: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 149: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 150: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 151: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 152: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 153: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Why?

+

Page 154: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Thank You

Page 155: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Further Information

https://events.opensuse.org/conference/oSC16/program/proposal/946

Page 156: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

External Sourceshttps://commons.wikimedia.org/wiki/File:Raspberry_Pi_B%2B_illustration.svg

https://commons.wikimedia.org/wiki/File:Sd-card-1377140.svg

http://eu.mophie.com/shop/media/catalog/product/cache/3/small_image/270x330/9df78eab33525d08d6e5fb8d27136e95/u/s/usb-micro3-40-blk_usb-tip-detail_front-back_540px.jpg

https://commons.wikimedia.org/wiki/File:Circle-icons-submarine.svg

https://commons.wikimedia.org/wiki/File:150-8-DIP.jpg

https://commons.wikimedia.org/wiki/File:Hdd_icon.svg

https://commons.wikimedia.org/wiki/File:ARM_CPU_icon.svg

http://findicons.com/icon/177982/memory#

Page 157: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

OSA Icons

Icons received from http://www.opensecurityarchitecture.org/cms/library/icon-library

Page 158: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

emojione Icons

Icons received from http://www.opensecurityarchitecture.org/cms/library/icon-library

Page 159: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Other Icons

http://findicons.com/icon/download/234261/clock/128/png

http://findicons.com/icon/439269/button_power

https://fosdem.org/2017/schedule/event/grub_new_maintainers/attachments/slides/1768/export/events/attachments/grub_new_maintainers/slides/1768/slides.pdf

https://de.wikipedia.org/wiki/BeagleBoard#/media/File:Beagle_Board_big.jpg

https://thenounproject.com/term/folder-tree/27307/

https://commons.wikimedia.org/wiki/File:Crystal_Project_Hardware.png

http://findicons.com/icon/202613/folder_library

Page 160: Marrying U-Boot, UEFI and grub_UEFI_and_grub.pdf · Marrying U-Boot, UEFI and grub. About Me ... EFI Runtime Data Console Boot Services Runtime Services Tables UEFI. UEFI boot flow

Other Icons

http://tumboy.tumblr.com/post/10052361836

http://findicons.com/icon/132807/b_leg_embossed

http://findicons.com/icon/237892/text_plain

http://findicons.com/icon/226957/package_games_board