Strat9 OS

An experimental operating system kernel written in Rust, targeting x86_64 (primary) and aarch64 (secondary).


Quick start

Building from source

# Build the full OS image (bootloader + kernel)
cargo make build-all

# Run in QEMU
cargo make run-gui

# Run with SMP (multi-core)
cargo make run-gui-smp

Build guide · Source repository


Architecture guides

GuideDescription
Architecture OverviewKernel subsystems, design principles, and data flow diagrams
Silo SystemProcess isolation, resource limits, pledge/unveil, module loading
Memory ManagementBuddy allocator, slab heap, COW, page tables, vmalloc
Boot SequenceBIOS → bootloader → Limine → kernel init flow
IPC MechanismsChannels, shared rings, semaphores, futexes
IPC Transport Architecture3-level hybrid IPC model (TypeSafe / LockFree / MMU)
Driver ModelComponent trait, PCI, NIC, storage, USB drivers
Syscall ReferenceComplete syscall table with parameters and errors
ABI OverviewKernel/userspace ABI definitions and versioning
ABI ChangelogRecent ABI changes (auto-generated)
ABI Support MatrixSyscall and struct compatibility matrix
Syscall LayerUserspace syscall wrappers and error handling
ChangelogProject changelog (auto-generated from git)
PublishingBuild, release, and deployment instructions

API reference by category

Core

The kernel, ABI definitions, and bootloader : the foundation of the OS.

CrateDescriptionAPI
strat9-kernelOS kernel: scheduler, memory management, drivers, IPCdocs · source
strat9-abiABI definitions shared between kernel and userspace (syscalls, data structs, flags, errno)docs · source
strat9-bootloaderBIOS/UEFI bootloader: stage1 MBR, stage2 protected/long mode switchdocs · source

Syscall & Userspace

Userspace libraries for interacting with the kernel.

CrateDescriptionAPI
strat9-syscallHigh-level syscall wrappers, error mapping, and constantsdocs · source
strate-initInit process: system bootstrap and service managementdocs · source

Component Framework

Trait-based component model for drivers and services.

CrateDescriptionAPI
componentComponent trait and registration frameworkdocs · source
component-macroDerive macros for component registrationdocs · source
strat9-bus-driversBus driver infrastructure (PCI, VirtIO)docs · source
strate-busBus abstraction layerdocs · source

Network Drivers

Intel Ethernet and NIC queue management.

CrateDescriptionAPI
e1000Intel E1000/E1000e network driverdocs · source
intel-ethernetIntel Ethernet common register definitionsdocs · source
driver-net-protoNetwork protocol driver abstractionsdocs · source
nic-queuesNIC TX/RX queue managementdocs · source
nic-buffersNIC buffer allocation and managementdocs · source
net-coreNetwork core utilitiesdocs · source

Filesystem

Filesystem abstraction and implementations.

CrateDescriptionAPI
strate-fs-abstractionFilesystem abstraction layer with safe math and Unicodedocs · source
strate-fs-ext4ext4 filesystem implementationdocs · source
strate-fs-ramfsIn-memory RAM filesystemdocs · source

Networking

Network stack, silo network service, and tools.

CrateDescriptionAPI
strate-netNetwork stack (TCP/UDP/ICMP)docs · source
strate-net-siloNetwork silo service (TCP/UDP listener)docs · source
dhcp-clientDHCP client status monitordocs · source
pingICMP ping utilitydocs · source
udp-toolUDP scheme test utilitydocs · source
telnetdTelnet serverdocs · source
ice-candidateICE candidate discovery over scheme UDPdocs · source

System Services

Admin interfaces, compatibility layers, and experimental features.

CrateDescriptionAPI
strat9-components-apiShared component API types and traitsdocs · source
strate-console-adminInteractive console shell with silo managementdocs · source
strate-web-adminWeb-based admin interfacedocs · source
strate-wasmWebAssembly runtime supportdocs · source
strate-webrtcWebRTC supportdocs · source
musl-compatmusl libc compatibility layerdocs · source
alloc-freelistFree-list allocatordocs · source

Testing

CrateDescriptionAPI
silo-testSilo integration testssource
mem-testMemory subsystem testsdocs · source
test-syscallsSyscall integration testsdocs · source
test-execExec syscall testsdocs · source

Building docs locally

# Build the full docs site (mdBook + rustdoc)
bash tools/scripts/build-docs-site.sh

# Serve locally
python3 -m http.server --directory build/docs-site 8000

# Check for broken links
python3 tools/scripts/check-links.py --site-dir build/docs-site