Analysis updated 2026-06-24
Follow the blog series step by step to build a minimal Rust kernel on x86-64
Learn how interrupts, paging, and heap allocation work in a real kernel
Use the post branches as reference points when teaching a systems programming class
Fork the project as a starting point for a hobby OS or embedded experiment
| phil-opp/blog_os | twitter/twemoji | desandro/masonry | |
|---|---|---|---|
| Stars | 17,456 | 17,642 | 16,705 |
| Language | HTML | HTML | HTML |
| Setup difficulty | hard | easy | easy |
| Complexity | 5/5 | 2/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires a nightly Rust toolchain, bootimage tooling, and QEMU, expect cross-compile and linker quirks on first run.
Blog OS is the source code and content for a blog series called "Writing an OS in Rust," hosted at os.phil-opp.com. An operating system (OS) is the foundational software that manages your computer's hardware and lets other programs run. Building one from scratch is one of the deepest exercises in programming, usually reserved for experts, this project makes that journey accessible through step-by-step tutorials. The series teaches you to build a small operating system kernel (the core of an OS that talks directly to hardware) using Rust, a modern programming language designed for safety and performance. Each blog post corresponds to a git branch in this repository, so you can check out the code at exactly the stage each post describes. The tutorials progress through several phases. It starts by creating a bare-bones program that runs without any operating system underneath it. Then it covers interrupts (how the CPU signals events like key presses), memory management (how the OS allocates and tracks memory), and eventually async/await, a programming model for running multiple tasks concurrently without traditional threads. Topics covered include VGA text mode (how to write characters to the screen at the hardware level), CPU exceptions and double faults (handling hardware errors), paging (a technique for managing memory in chunks), heap allocation (dynamic memory), and asynchronous multitasking. The project targets x86-64 hardware architecture and is written in Rust. It is dual-licensed under Apache 2.0 and MIT.
Source code for the Writing an OS in Rust blog series, with one git branch per post covering bare-metal boot, interrupts, paging, heap, and async tasks on x86-64.
Mainly HTML. The stack also includes Rust, x86-64, QEMU.
Dual-licensed Apache 2.0 and MIT - free to use, modify, and ship in commercial products under either license with attribution.
Setup difficulty is rated hard, with roughly 1day+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.