The UAPI Boot Loader Specification defines conventions that let multiple operating systems and bootloaders share boot config files. So far, only systemd-boot implements it - and it’s UEFI-only by design.
As a result, hybrid UEFI/BIOS images require maintaining (and keeping in sync) two sets of bootloader configs: one for systemd-boot, and one for a legacy bootloader such as syslinux.
I set out to fix that by building a BIOS bootloader that uses the UAPI Boot Loader Specification - allowing both UEFI and legacy boot to use a single shared set of config files. This talk is about why that matters, how I built it, and what comes next.
In this talk, I’ll cover:
- What the UAPI boot spec is
- Why you'd want to use legacy boot instead of EFI/systemd-boot - *spoiler: you don't! but you might have to*
- How I implemented UAPI boot support for legacy BIOS
- What about UKIs?
- A live demo of the bootloader in action
- The current state of the project and what’s next
https://uapi-group.org/specifications/specs/boot_loader_specification
https://github.com/nkraetzschmar/bootloader
Licensed to the public under https://creativecommons.org/licenses/by/4.0/de/
about this event: https://cfp.all-systems-go.io/all-systems-go-2025/talk/ANC879/