rustos is a minimal, educational, UEFI-first operating system project written in Rust.
The project is intentionally small, but it is no longer just a scaffold. It boots in QEMU, exercises a real breakpoint-handler path, discovers the UEFI memory map, and keeps most pure logic in host-testable modules so the foundation stays understandable and maintainable.
- a bootable
x86_64-unknown-uefikernel for QEMU - deterministic early-boot and runtime log output
- a real bounded breakpoint exception smoke path
- real UEFI memory-map discovery and a derived frame-allocator seed
- host-testable pure logic in
nucleus/for:archconsoleinterruptmemorypagingsyscalltaskdescriptorvfs
- explicit kernel boundaries in
kernel/for boot, architecture, paging, syscalls, and the new VFS starter - a Rust-native
xtaskworkflow for checks, formatting, linting, unit tests, QEMU smoke tests, and local runs
rustos is still a foundation-first project. It does not currently provide:
- user-mode execution
- a scheduler or multitasking
- real frame allocation
- a heap allocator
- page-table management or mapping APIs
- descriptor tables
- a real virtual filesystem implementation
- filesystems or networking
- broad hardware support or multi-architecture support
- POSIX compatibility claims
Install:
- nightly Rust
- the
x86_64-unknown-uefiRust target - QEMU with
qemu-system-x86_64
The toolchain is pinned in rust-toolchain.toml.
On macOS:
brew install qemu
Use xtask as the main local entry point:
cargo run -p xtask -- checkcargo run -p xtask -- fmtcargo run -p xtask -- lintcargo run -p xtask -- test-unitcargo run -p xtask -- test-qemucargo run -p xtask -- test-exceptioncargo run -p xtask -- testcargo run -p xtask -- run
kernel/— firmware-facing kernel code and runtime boundariesnucleus/— host-testable pure logic and small subsystem modelsxtask/— developer workflow commandsdocs/— project contract, architecture, roadmap, and decisions.github/— CI and contribution templates
The documentation is intentionally centered on four core docs:
README.md— project overview and onboardingdocs/spec.md— current technical contract and subsystem behaviordocs/architecture.md— codebase structure, boundaries, and design rulesdocs/roadmap.md— status, sequencing, and near-term priorities
Durable platform rationale lives in:
docs/decisions/0001-target-platform.md
The normal boot path currently emits this sequence:
rustos: boot start
rustos: hello from UEFI
rustos: boot mode normal
rustos: runtime init start
rustos: console init complete
rustos: arch init start
x86_64
arch runtime ready
rustos: arch init complete
rustos: exception init
exception groundwork ready
rustos: exception groundwork modeled
rustos: interrupt init
timer interrupt groundwork ready
rustos: interrupt groundwork modeled
rustos: timer init
rustos: timer groundwork modeled
rustos: memory init
rustos: memory map init
rustos: discovered conventional memory
rustos: first conventional range discovered
rustos: frame allocator init
rustos: frame allocator seed ready
rustos: memory foundation ready
rustos: paging init
rustos: paging direction defined
rustos: paging arch probe ready
rustos: heap init deferred
rustos: syscall init
rustos: syscall direction defined
rustos: syscall boundary ready
rustos: vfs init
rustos: vfs namespace ready
rustos: vfs console path ready
rustos: panic
rustos: idle ready
rustos: runtime init complete
Start with:
CONTRIBUTING.mddocs/spec.mddocs/architecture.mddocs/roadmap.md
Licensed under the MIT License. See LICENSE.