Skip to content

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
Step-by-step guide: how to use RPi OSInstall, first run, examples, tips and FAQs

How to get it

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

ProjectStarsTypeLevelUpdatedBest for
raspberry-pi-os (this)14kLearning resourceadvanced2.6 years agoStudents who want to understand how operating systems work at the lowest level
Python226kLearning resourcebeginner17 days agoStudents learning algorithms and data structures
first-contributions56.7kLearning resourcebeginner4 days agoPeople who have never submitted a pull request to an open source project
claude-howto46.4kLearning resourcebeginner4 days agoDevelopers who have installed Claude Code and want to go beyond basic prompts
IoT-For-Beginners17.2kLearning resourcebeginner5 months agoStudents who want a structured, project-based introduction to IoT
java8-tutorial16.7kLearning resourcebeginner3.2 years agoJava 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.