v0.3.0 Rust x86_64

OpenOS

A microkernel operating system written in Rust, designed for x86_64 bare metal. Channel/Handle IPC, user-space services, and memory safety.

openos@qemu:~
Core

Built for the future

A microkernel operating system designed with modern principles

Channel/Handle IPC

Capability-based inter-process communication with synchronous rendezvous, Handle transfer, and atomic RPC primitives.

Memory Safety

Rust borrow checker eliminates use-after-free, double-free, and buffer overflow vulnerabilities at compile time.

User-Space Services

Drivers and system services run in Ring 3, isolated from the kernel. Fault containment without kernel crashes.

ELF Loader

Dynamic ELF64 loader with initrd support. Load and execute user-space programs from ramdisk archives.

Zero-Cost Abstractions

Rust monomorphization and zero-cost abstractions mean high-level code compiles to optimal machine instructions.

Bare Metal

Runs directly on x86_64 hardware or QEMU. No underlying OS required - true bare metal performance.

Architecture

Microkernel design

Minimal kernel with user-space services

User Space (Ring 3)
Filesystem
Network
Drivers
Display
IPC
Kernel Space (Ring 0)
Memory
Scheduler
IPC
Interrupts
Hardware
11
Syscalls
22
Total Allocated
<100KB
Kernel Size
Ring 3
User Services
Code

Simple by design

User-space programs communicate via Channel IPC

hello.asmnasm
_start:
    mov rbx, rdi            ; save handle_a

    ; channel_send(handle_a, msg, len)
    mov rdi, rbx
    lea rsi, [rel msg]
    mov rdx, msg_len
    mov rax, 0x02           ; SYS_CHANNEL_SEND
    syscall

    ; process_exit(0)
    mov rdi, 0
    mov rax, 0x32           ; SYS_PROCESS_EXIT
    syscall
console_svc.asmnasm
_start:
    mov rbx, rdi            ; save handle (end B)

    ; channel_receive(handle, buf, 256)
    mov rdi, rbx
    lea rsi, [rel buf]
    mov rdx, 256
    mov rax, 0x03           ; SYS_CHANNEL_RECEIVE
    syscall

    ; console_write(buf, len)
    mov rcx, rax
    lea rdi, [rel buf]
    mov rsi, rcx
    mov rax, 0xF0           ; SYS_CONSOLE_WRITE
    syscall

    ; channel_reply(handle, "OK", 2)
    mov rdi, rbx
    lea rsi, [rel ok_msg]
    mov rdx, 2
    mov rax, 0x05           ; SYS_CHANNEL_REPLY
    syscall

Ready to explore?

Start building with OpenOS today