Milestone B2 complete · x86-64

A small kernel
with big opinions.

Mirox is a from-scratch operating system kernel written in Rust. It boots through UEFI, owns its entire stack, and borrows ideas—not code.

MXkernelx86_64
UEFI boot
memory
CPU tables
0x4D49524F585F424F
ring 0 / long mode
Current0.1 / pre-alpha
BootUEFI x86-64
LanguageRust nightly
LicenseSource available

Not Linux-compatible.
Not POSIX-bound.
Not nostalgic.

Mirox is a hybrid kernel: a lean monolithic core for hot paths, with room for non-critical drivers and services to live in isolated user space.

The system keeps what still works—descriptors, stable syscalls, composable tools—and rejects historical contracts that no longer earn their complexity.

Three traditions.
One system.

Mirox chooses a clear answer for each subsystem instead of copying a complete operating system wholesale.

01Unix

One object model

Files, devices, pipes, and sockets share one descriptor namespace—small tools, simple composition.

02BSD

Stable by design

Append-only syscall numbers, a typed sysctl tree, and capability-oriented security as a first-class primitive.

03Linux

Pragmatic hardware

One driver model with hotplug and a unified bus abstraction, without inheriting Linux’s userspace ABI.

Every layer
is ours to own.

The bootloader speaks a tiny shared protocol, hands the physical memory map to the kernel, and gets out of the way. From there Mirox initializes segmentation, interrupts, allocation, and the heap.

Explore kernel source
serial0 — 115200
MIROX/UEFI loading kernel.elf
ok  ELF64 entry 0xffffffff80000000
ok  boot protocol MIROX_BO
ok  GDT installed
ok  IDT installed
ok  frame allocator online
ok  kernel heap online

mirox>_

Built in honest
increments.

The roadmap moves from hardware ownership to processes, files, and isolated services. No fake version-one finish line.

B1

UEFI boot

Bootloader, ELF loading, and the Mirox boot protocol.

complete
B2

Memory + CPU

Frame allocator, kernel heap, GDT, and IDT.

complete
B3

Syscall gate

The first stable Mirox syscalls and error model.

next
B4

Processes

Tasks, scheduling, address spaces, and lifecycle.

planned
B5

VFS + sysctl

A unified descriptor model and typed configuration tree.

planned
B6

Drivers

A unified device model and first user-space server.

planned

Your host.
Our kernel.

Produce the same 64 MiB UEFI image from Linux or Windows, then boot it in QEMU. Rust nightly and the target configuration stay pinned in the repository.

Lx
Linuxbash · QEMU · OVMF · mtools
$ sudo apt install qemu-system-x86 ovmf mtools
$ rustup toolchain install nightly --component rust-src --target x86_64-unknown-uefi
$ bash build/make-image.sh
$ bash build/qemu-run.sh
Linux details
WindowsPowerShell · QEMU · OVMF · mtools
PS> rustup toolchain install nightly --component rust-src --target x86_64-unknown-uefi
PS> powershell -ExecutionPolicy Bypass -File build\make-image.ps1
PS> powershell -ExecutionPolicy Bypass -File build\qemu-run.ps1
Windows details

Prefer WSL2? Use the Linux flow unchanged inside WSL. Set MIROX_OVMF when firmware lives outside a standard path.

M

Boot something
you understand.

View Mirox on GitHub