// the find
rust-embedded/rust-raspberrypi-OS-tutorials
:books: Learn to write an embedded OS in Rust :crab:
A step-by-step tutorial series for writing a bare-metal OS kernel in Rust targeting ARMv8-A (RPi3/RPi4). Covers boot sequence, UART drivers, virtual memory, privilege levels, and hardware exceptions. Aimed at developers who want to understand what happens below the OS, not just use one.
Each tutorial is a self-contained bootable binary with a diff from the previous one — you can actually see what changed and why, rather than hunting through a monolithic commit. The toolchain friction is mostly eliminated via Docker; cross-compilation, QEMU, and the chainloader utility all work without fighting your host environment. The `minipush` UART loader means you can iterate on real hardware without reflashing an SD card every time. Code is extensively documented and `make doc` generates browsable API docs for each tutorial step.
Last pushed February 2024 and the author has signaled the series is complete, so there's no path forward to scheduler, filesystem, or networking — you hit a wall after virtual memory and exceptions. The tutorial coverage is uneven: early chapters have full prose explanations, later ones (10+) drop to tl;dr and diffs only, which isn't enough when the concepts get hard. macOS support is explicitly experimental and involves installing Ruby gems for the test harness, which is a weird dependency choice that breaks periodically. No RISC-V port exists despite the README calling for one, so the architecture knowledge is locked to AArch64.