Serra is an open-source x86 boot manager currently under construction.
My goal here is to develop a universal and reliable boot manager that works across different systems, with a focus on code quality and user experience.
It's currently a work in progress - see the roadmap below - but my goal is to have it ready by later this year.
Important
You'll need to do this on Linux (or an environment like WSL); other operating systems aren't supported.
In order to build Serra, you will need the following tools:
This project uses the C23 standard, which is fairly new, so please make sure you're using the latest version.
-
Assemblers and (cross) compilers
-
nasm, or any other compatible x86 assembler;
-
i686-elf-gcc, or any other x86 native ELF compiler;
-
-
- This will be used to build
Boot/Legacy, and must have full C23 support (GCC 15+, Clang 19+);
- This will be used to build
-
-
x86_64-elf-gcc, or any other x64 native ELF compiler;
-
-
- This will be used to build
Common/, and must have full C23 support (GCC 15+, Clang 19+);
- This will be used to build
-
-
x86_64-w64-mingw32-gcc, or any other x64 Windows/PE compiler.
-
-
- This will be used to build
Boot/Efi, and must have partial C23 support (GCC 13+, Clang 16+);
- This will be used to build
-
-
-
- On Ubuntu 24.04+, you can use
sudo apt install binutils-mingw-w64 gcc-mingw-w64.
- On Ubuntu 24.04+, you can use
-
-
Build tools
-
make(GNU make), for the build system itself;
-
dd,mtoolsandsfdisk, to compile the final disk image.
-
Other utilities (optional)
-
qemuorbochs, to run the final disk image;
-
gdb, to debug the boot manager;
-
ovmf, to use as UEFI firmware.
Understandably, this isn't the most straightforward setup, and you will need
to make your own cross compilers (this guide
is pretty useful), but once everything is done, it should be as easy as
running make all.
Building and running the boot manager
This is still a work-in-progress, but you can configure how Serra is built
and configured in makefile.config > Build Options.
make clean: Clean all leftover files (.o, .bin, .elf, .img, etc.);make compile: Compile any remaining files;make all: Build everything;
make run: Run with QEMU;make runbochs: Run with Bochs;make runefi: Run EFI with QEMU;make rungdb: Run with QEMU using the GDB debugger;make runkvm: Run with QEMU using the KVM emulation layer;make runint: Run with QEMU showing exceptions.
-
Finish implementing the disk subsystem, in
Kernel/Disk; -
- Implement handlers for the EFI Block and Disk IO protocols (
EFI_BLOCK_IO_PROTOCOLandEFI_DISK_IO_PROTOCOLrespectively);
- Implement handlers for the EFI Block and Disk IO protocols (
-
- Unify both the BIOS and EFI handlers into one unified disk read function;
-
- Work on filesystem drivers, and create a VFS.
-
Add the actual boot manager functionality (support for boot protocols);
-
Create simple human interface drivers (keyboard, mouse..);
-
Create a simple console user interface / menu.
This project has been released under the MIT license. For more information, please refer to the accompanying license agreement. <3
(last updated on July 30th 2025)


