FrozenBoot is a modern, feature-rich x86 bootloader.
FrozenBoot aims to become a stable, user-friendly and feature rich x86 bootloader. It will be usable with custom kernels, through a simple API, or through multiboot2 support. But it can also be used as a bootloader for most of the available Linux distributions (Ubuntu, Debian). Not only that, but it will also provide various utilities to diagnose your system, or customize it through a user-friendly interface.
For now, the project is still in a very early phase, but we except to be able to boot common Linux-based distributions soon.
The main repository frozenpeach-dev/bootloader
contains all
of the required files to build a minimal standalone version of the bootloader.
git clone https://github.com/frozenpeach-dev/bootloader.git
cd bootloader
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
Before this step, you might need to reload your shell environment after installing the Rust toolchain.
rustup component add llvm-tools-preview --toolchain nightly
rustup component add rust-src --toolchain nightly
You can now build the project, by changing directory to the build/
directory that contains all the
necessary build tools.
cd build/
cargo run
Use your package manager to install qemu if you want to run the bootloader.
qemu-system-x86_64 -drive format=raw,file=boot.img
The repository is built with the following file structure:
build/
: contains the necessary tools to build the projectsrc/
: source filesbios/
: BIOS-related utilities (such as SMBIOS)fs/
: File system / partition scheme codefzboot/
: Main bootloader code, contains the Kernel APImbr/
: Bootloader entry, contained in the disk MBRreal/
: real-mode entry ("second stage"), loaded just after the MBRmain/
: protected-mode entry, loaded after switching from real mode...
: feature-specific source files (time
,irq
)
io/
: Input-output device management codemem/
: contains memory-management related codevideo/
: contains FrozenBoot's graphic code.x86/
: architecture-specific code
FrozenBoot is licensed under the terms of the GNU General Public License version 3 (GPLv3). A version of that license is made available when cloning this repository in LICENSE.txt
Thank you for considering contributing to the FrozenBoot project! We welcome all contributions – from bug reports and feature requests to code changes and documentation improvements.
Before you start, please take a moment to review our Code of Conduct, and make sure to check out our Contributing Guide.