This is an experimental bare metal operating system written in Rust and Assembly, inspired by Philipp Oppermann's Blog OS. Code and implementation developed with assistance from Claude 3.5 Sonnet.
This project is a hands-on exploration of operating system development using:
- Rust for the kernel
- Assembly for boot code
- Custom bootloader implementation
boot.asm
/boot2.asm
- Assembly boot codesrc/main.rs
- Kernel entry pointsrc/vga_buffer.rs
- VGA text mode buffer implementationCargo.toml
- Rust project configurationx86_64-blog_os.json
- Custom target specification
Make sure you have the following prerequisites:
- Rust nightly
cargo-bootimage
tool- QEMU for testing (optional)
Build the project:
cargo build
Create bootable image:
cargo bootimage
You can run the OS in QEMU:
qemu-system-x86_64 -drive format=raw,file=target/x86_64-blog_os/debug/bootimage-blog_os.bin
Or using cargo run (if configured):
cargo run
To run the assembly boot code variants:
# Run first boot code variant
make run1
# Run second boot code variant
make run2
The assembly variants demonstrate:
run1
: A simple 16-bit real mode bootloader that displays a message and echoes keyboard inputrun2
: A graphics demo that switches to VGA mode (320x200, 256 colors) and draws a circle using the midpoint circle algorithm
- Writing an OS in Rust by Philipp Oppermann
- OSDev Wiki
This is an educational project aimed at learning OS development concepts through hands-on implementation. Currently implements:
- Basic boot sequence
- VGA text mode output
- More features to come...
MIT License (or specify your chosen license)