yabits: Fast and lightweight yet another UEFI implementation
yabits is a pure UEFI coreboot payload. Compared with TianoCore, it is fast and lightweight. yabits is based on the part of Minoca OS. It can run GRUB2, Linux, OpenBSD, and other UEFI applications. Tested on QEMU/KVM and Lenovo ThinkPad X230. It is still under the development and not ready for production.
Downloads
The latest yabits is v0.0.1. This release is pre-release.
coreboot.rom
: coreboot rom with yabits forqemu-system-x86_64
machine type “pc-i440fx-2.8”uefi
: yabits coreboot payload with debug infomationuefi.elf
: stripped yabits coreboot payload
You can try yabits coreboot.rom
on QEMU.
Prepare UEFI-aware OS image.
Run
$ qemu-system-x86_64 -drive if=pflash,format=raw,readonly,file=coreboot.rom -drive file=os.qcow2,if=none,id=sata -device ich9-ahci,id=ahci -device ide-drive,drive=sata,bus=ahci.0 -serial stdio -m 2G
Build from Source
Step1 - Follow coreboot build instruction coreboot lesson 1 - Starting from scratch
Step2 - Clone yabits repository
$ git clone https://github.com/yabits/uefi.git
$ cd uefi
Step3 - Configure settings
$ make menuconfig
Step4 - Build yabits payload
$ make
Step5 - Configure coreboot
$ cd coreboot
$ make menuconfig
select your favorite mainboard
select 'Payload' menu
select 'Add a Payload'
select 'Payload path and filename'
select 'uefi/build/build/uefi.elf'
save config and exit
$ make
Demo
OpenBSD runs with yabits
Boot time comparison on Lenovo ThinkPad X230. yabits vs default UEFI
Comparison
Boot time and footprint
Boot time (s) | Footprint (MiB) | |
---|---|---|
yabits | 3.15 | 0.4 |
TianoCore | 7.15 | 4.1 |
Other UEFI implementations
Boot time | Footprint | Open source | TianoCore free | |
---|---|---|---|---|
yabits | ✔️ | ✔️ | ✔️ | ✔️ |
default | ✖️ | ✖️ | ✖️ | ✖️ |
TianoCore | ✖️ | ✖️ | ✔️ | ✖️ |
NERF | ✔️ | ✔️ | ✔️ | ✔️ |
License
yabits is lincesed under the terms of GNU General Public Lincese, version 3. See the headers of source code for more details.
This page is MIT license.