
RPi OS
A step-by-step tutorial for building a tiny operating system kernel on Raspberry Pi 3.s-matyukevich/raspberry-pi-os
- Stars
- 14k
- Forks
- 1.3k
- Licence
- MIT
- Language
- C
- Last update
- 2.6 years ago
- Type
- Learning resource
No commits in over a year — check for forks or alternatives before adopting.
What it is
This is a written, lesson-by-lesson guide that teaches how to create a simple operating system kernel from scratch, called RPi OS, for the Raspberry Pi 3. Each lesson explains a kernel feature as implemented in RPi OS and then shows how the Linux kernel handles the same thing. The source code for each lesson is included as a snapshot folder so readers can follow how the project evolves.
- Read the lessons in order to learn how a kernel initializes the processor
- Work through the exercises at the end of each lesson
- Compare RPi OS code in each src folder with the matching Linux kernel explanation
- Follow the snapshots to see how kernel features are added step by step
Great for
- Students who want to understand how operating systems work at the lowest level
- Developers curious about kernel internals who have some C and programming background
- Learners who want to compare a small hand-built kernel with the Linux kernel
- People with a Raspberry Pi 3 who want a hands-on learning project
Not ideal for
- Anyone wanting a usable general-purpose OS, since the README says RPi OS has very limited functionality
- Users of other Raspberry Pi models, since the README says it supports only the Raspberry Pi 3
- Readers looking for a finished, fully documented course, since several lessons are marked in progress or to be done
How to get it
- 1
Clone and build from source
You'll need: Raspberry Pi 3 hardware for running the OS · A Linux environment for building (README details are in docs/Prerequisites.md, not included here)
Clone the repository
git clone https://github.com/s-matyukevich/raspberry-pi-os - 2
Run it
- Clone the repository from GitHub
- Read the Prerequisites document in docs/Prerequisites.md
- Start with Lesson 1 and follow the guide in order
- Build and run the src folder snapshot for each lesson as you progress
- 3
Get the most out of it
- Read the Introduction document for project goals and history
- Use the per-lesson src snapshots to see code changes between lessons
- Read the Linux kernel sections alongside the RPi OS code to compare approaches
- Try the exercises at the end of each lesson
Downloads
Strengths
- Explains concepts gradually, with a code snapshot for each lesson
- Connects simple code to real Linux kernel implementations
- Large community interest, with 13,960 stars and an MIT license
Trade-offs
- Only supports Raspberry Pi 3 according to the README
- Several lessons, including the Linux part of Lesson 6 and Lessons 7 to 11, are incomplete or not yet written
- Last push was 2024-03-29, so the project may not be actively updated
How it compares
| Project | Stars | Type | Level | Updated | Best for |
|---|---|---|---|---|---|
| raspberry-pi-os (this) | 14k | Learning resource | advanced | 2.6 years ago | Students who want to understand how operating systems work at the lowest level |
| Python | 226k | Learning resource | beginner | 17 days ago | Students learning algorithms and data structures |
| first-contributions | 56.7k | Learning resource | beginner | 4 days ago | People who have never submitted a pull request to an open source project |
| claude-howto | 46.4k | Learning resource | beginner | 4 days ago | Developers who have installed Claude Code and want to go beyond basic prompts |
| IoT-For-Beginners | 17.2k | Learning resource | beginner | 5 months ago | Students who want a structured, project-based introduction to IoT |
| java8-tutorial | 16.7k | Learning resource | beginner | 3.2 years ago | Java developers who work on older Java code and want to learn Java 8 features |
Stats synced from GitHub. The assessment above was drafted with AI from the project's README on 2026-10-29 and may miss recent changes — check the README before relying on a command. MIT licence: free to use, modify and distribute, including commercially, as long as you keep the copyright notice.