finds.dev← search

// the find

rust-embedded/rust-raspberrypi-OS-tutorials

★ 14,680 · Rust · Apache-2.0 · updated Feb 2024

: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.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →