1
0
Fork 0
mirror of https://gitlab.com/bztsrc/bootboot.git synced 2023-02-13 20:54:32 -05:00
bztsrc--bootboot/x86_64-efi
2020-06-24 16:33:08 +02:00
..
bootboot.c Loaders moved to dist directory 2020-06-24 16:33:08 +02:00
crt0-efi-x86_64.o Initial commit 2018-06-05 20:34:03 +02:00
efirom.c Changed EFI PE subsystem per issue #4 2020-01-05 14:03:22 +01:00
elf_x86_64_efi.lds Initial commit 2018-06-05 20:34:03 +02:00
fs.h mkbootimg improvements 2020-06-20 05:00:46 +02:00
libefi.a Initial commit 2018-06-05 20:34:03 +02:00
libgnuefi.a Initial commit 2018-06-05 20:34:03 +02:00
Makefile Loaders moved to dist directory 2020-06-24 16:33:08 +02:00
OLVASSEL.md Translations 2019-03-15 02:48:34 +01:00
README.md Translations 2019-03-15 02:48:34 +01:00
tinf.h Initial commit 2018-06-05 20:34:03 +02:00
tinflate.c Initial commit 2018-06-05 20:34:03 +02:00

BOOTBOOT UEFI Implementation

See BOOTBOOT Protocol for common details.

On UEFI machines, the PCI Option ROM is created from the standard EFI OS loader application.

Machine state

IRQs masked. GDT unspecified, but valid, IDT unset. SSE, SMP enabled. Code is running in supervisor mode in ring 0 on all cores.

File system drivers

For boot partition, UEFI version relies on any file system that's supported by EFI Simple File System Protocol. This implementation supports both SHA-XOR-CBC and AES-256-CBC cipher.

Installation

  1. UEFI disk: copy bootboot.efi to FS0:\EFI\BOOT\BOOTX64.EFI.

  2. UEFI ROM: use bootboot.rom which is a standard PCI Option ROM image.

  3. GRUB, UEFI Boot Manager: add bootboot.efi to boot options.

You can also run the loader in interactive mode from the EFI Shell, appending options to its command line.

FS0:\> EFI\BOOT\BOOTX64.EFI /?
BOOTBOOT LOADER (build Oct 11 2017)

SYNOPSIS
  BOOTBOOT.EFI [ -h | -? | /h | /? ] [ INITRDFILE [ ENVIRONMENTFILE [...] ] ]

DESCRIPTION
  Bootstraps an operating system via the BOOTBOOT Protocol.
  If arguments not given, defaults to
    FS0:\BOOTBOOT\INITRD   as ramdisk image and
    FS0:\BOOTBOOT\CONFIG   for boot environment.
  Additional "key=value" command line arguments will be appended to the
  environment. If INITRD not found, it will use the first bootable partition
  in GPT. If CONFIG not found, it will look for /sys/config inside the
  INITRD (or partition).

  As this is a loader, it is not supposed to return control to the shell.

FS0:\>

Limitations

  • Maps the first 16G of RAM.
  • PCI Option ROM should be signed in order to work.
  • Compressed initrd in ROM is limited to 16M.