This crate implements a stripped down EFI runtime that can be used by bootloader implementations to provide the EFI context needed by OS loaders such as EFI stub Linux kernels, systemd-boot UKI images or even GRUB+shim.
The EFI runtime implements the following features/APIs:
- a memory map and associated page and pool allocation routines, as well as an implementation of the GetMemoryMap() EFI boot service to deliver the final memory map to the OS;
- a EFI protocol database that supports installing and uninstalling protocols, locating handle and protocol buffers and locating device paths;
- a EFI configuration table database
The following EFI features are NOT supported:
- the UEFI driver model
- asynchronous events and notifications
The runtime services related to timekeeping, the EFI variable store and reset/poweroff are left to the caller to implement, as they cannot be implemented generically. The same applies to the Stall() boot services.
Example