Skip to content
Tech News
← Back to articles

Linux 0.11 rewritten in idiomatic Rust, boots in QEMU

read original more articles

A modern Rust rewrite of the Linux 0.11 kernel — boots on i386 in QEMU, runs a self-hosted Unix-style userland.

$ cd kernel && make run … Welcome to linux-0.11-rs. https://github.com/Poseidon-fan/linux-0.11-rs (login: 0 @ linux-rs :: Wed May 27 09:35:43 UTC 2026) [root@linux-rs /root] # ls /bin | wc -l 69

linux-0.11-rs rebuilds the 1991 Linux 0.11 kernel from scratch in modern Rust. It keeps the original system's semantics — what it does — while rethinking how it's expressed: stronger types, clearer module boundaries, idiomatic abstractions everywhere. The kernel boots on emulated i386 hardware, runs a full init → shell → coreutils stack, and ships with the tooling to build your own bootable image in one command.

✨ Highlights

A kernel with most of what Linux 0.11 had — processes, virtual memory with demand paging and CoW fork, the Minix v1 filesystem, ATA disk driver, VGA + PS/2 console, 8250 serial console, TTY layer, signals, and the complete syscall table.

— processes, virtual memory with demand paging and CoW fork, the Minix v1 filesystem, ATA disk driver, VGA + PS/2 console, 8250 serial console, TTY layer, signals, and the complete syscall table. A Rust user-space "std" — user_lib mirrors the public shape of std::{fs, io, path, env, process, time} so user programs read like ordinary Rust, not like syscall plumbing.

— mirrors the public shape of so user programs read like ordinary Rust, not like syscall plumbing. A real userland — 80+ coreutils plus a hand-written POSIX-subset shell ( sh ) with pipelines, control flow, functions, glob, command and arithmetic substitution, and an interactive line editor with Tab completion and history.

— 80+ coreutils plus a hand-written POSIX-subset shell ( ) with pipelines, control flow, functions, glob, command and arithmetic substitution, and an interactive line editor with Tab completion and history. One-command images — tools/build-disk.sh compiles every user program, lays them out into a Unix-style filesystem, and packs the result into a bootable disk image.

— compiles every user program, lays them out into a Unix-style filesystem, and packs the result into a bootable disk image. Companion image tools — mbrkit and miniximg are standalone crates, useful on their own for any project that touches MBR or Minix v1 images.

— and are standalone crates, useful on their own for any project that touches MBR or Minix v1 images. Devcontainer included — clone, open in VS Code, hit "Reopen in Container", run make run .

... continue reading