https://github.com/tailwags/bread
🍞 A modern UEFI bootloader for the linux kernel
https://github.com/tailwags/bread
bootloader linux uefi
Last synced: 10 months ago
JSON representation
🍞 A modern UEFI bootloader for the linux kernel
- Host: GitHub
- URL: https://github.com/tailwags/bread
- Owner: tailwags
- License: apache-2.0
- Created: 2024-03-15T02:45:56.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-03-23T20:13:25.000Z (over 1 year ago)
- Last Synced: 2025-09-06T14:51:47.806Z (10 months ago)
- Topics: bootloader, linux, uefi
- Language: Rust
- Homepage:
- Size: 63.5 KB
- Stars: 6
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bread
An experimental UEFI bootloader for the Linux kernel written in Rust.
Unlike other UEFI-only bootloaders, Bread does not use the kernel UEFI-stub.
Instead, it relies on the same boot protocol that has been used in traditional
BIOS booting for years. This allows for greater control over the memory map and
enables more advanced boot scenarios, such as secure boot and encryption,
without requiring special support from the kernel.
Currently, the following architectures are supported:
- x86-64
- aarch64
In the future, riscv64gc will also be a target, but currently, there are no
actual UEFI riscv boards available.
## Building
Before building Bread, there are a few prerequisites:
- [just](https://just.system) must be installed and available in the PATH.
- Rust must be installed via [rustup](https://rustup.rs/). Distro-provided rust
versions will not work.
- [QEMU](https://www.qemu.org/) can be optionally installed to run the
bootloader in a VM.
To build Bread, simply run `just` in the terminal. You can then copy the
resulting `bread.efi` file to your EFI partition.
To run inside a vm, ensure QEMU is available in the PATH, then run:
```
just qemu-x86_64 # or qemu-aarch64
```
This will create a new ESP folder containing the required files and launch QEMU
using the scripts located in the `scripts` folder.
## Configuring
TODO
## License
This project is licensed under the
[APACHE-2.0 LICENSE](http://www.apache.org/licenses/LICENSE-2.0). You can find
more info in the [LICENSE](LICENSE) file.