fastboot.efi is an implementation of a subset of the fastboot protocol as a standalone EFI application, for the purpose of enabling workflows using fastboot boot for e.g. rapid kernel development in environments that doesn't already provide fastboot support. It also has a more optimistic memory allocation policy, allowing for booting large images.
fastboot.efi supports booting abootimg v2 and PE32+ (EFI) images.
Supported fastboot commands are boot, continue, and reboot.
Use rustup to install the aarch64-unknown-uefi target. Then build using:
cargo build --target aarch64-unknown-uefi
The resulting fastboot.efi can be loaded by normal means of loading EFI applications, such as chainloading from systemd-boot/grub or placed as \EFI\boot\bootaa64.efi.
To further simplify bootstrapping processes of a device for development purposes, fastboot.efi can be packaged in an EFI System Partition (esp), wrapped by a GPT header using the included repart.d configuration and the following command:
systemd-repart fastboot-nvme-disk.img --empty=create --size=64M --definitions=repart.d --root=$PWD
or:
systemd-repart fastboot-ufs-disk.img --empty=create --size=512M --sector-size=4096 --definitions=repart.d --root=$PWD
This file can be written straight to a NVMe (or UFS) device, which upon booting automatically enters fastboot mode.
rawprogram-nvme.xml and rawprogram-ufs.xml are included for convenient application with common flash tools.
The standard fastboot host tool, will upon invoking fastboot boot wrap the provided non-abootimg file in an abootimg format before downloading and booting it on the device.
By using a "non-standard" fastboot host tool, that downloads the file provided as is, fastboot.efi allows booting arbitrary EFI applications, such as Unified Kernel Images (UKI).
With the goal of providing a convenient development environment for upstream work, please do contribute to both implementation and documentation by opening a Pull Request. Issues can be used to track issues with the implementation, documentation, and device-specific issues.
See CONTRIBUTING for more information.
Licensed under BSD 3-Clause Clear License.