Pronounced like the drum or the drug apparatus, whichever you prefer.
Originally built from the Limine Bootloader template in C, this project has been rewritten in Rust, following along with the Writing an OS in Rust tutorial.
The project's codebase diverges from this point in the tutorial's codebase.
- Freestanding Rust binary and build system
- VGA text mode interfacing
- Basic font rendering
- Basic text buffer display + formatted printing
- Getting and displaying hardware info (memory layout, tables, etc)
- Interrupt handling and keyboard input
This project requires a nightly version of Rust because it uses some unstable
features. At least nightly 2020-07-15 is required for building. You might need
to run rustup update nightly --force
to update to the latest nightly even if
some components such as rustfmt
are missing it.
You can build the project by running:
cargo build
To create a bootable disk image from the compiled kernel, you need to install
the bootimage
tool:
cargo install bootimage
After installing, you can create the bootable disk image by running:
cargo bootimage
This creates a bootable disk image in the target/x86_64-bongos/debug
directory.
You can run the disk image in QEMU through:
cargo run
QEMU and the bootimage
tool need to be installed for this.
You can also write the image to an USB stick for booting it on a real machine. On Linux, the command for this is:
dd if=target/x86_64-bongos/debug/bootimage-bongos.bin of=/dev/sdX && sync
Where sdX
is the device name of your USB stick. Be careful to choose the
correct device name, because everything on that device is overwritten.