Learning operating system development using Linux kernel and Raspberry Pi logo

Learning operating system development using Linux kernel and Raspberry Pi

Free

Step-by-step guide to building a simple OS kernel for Raspberry Pi

FreeFree tier
Type
Open Source

About Learning operating system development using Linux kernel and Raspberry Pi

This repository provides a step-by-step guide to creating a simple operating system kernel from scratch, called Raspberry Pi OS (RPi OS), for the Raspberry Pi 3. The project is largely based on the Linux kernel and teaches OS development concepts such as kernel initialization, interrupt handling, process scheduling, virtual memory management, and more. Each lesson includes a corresponding source code snapshot in the 'src' directory, allowing learners to follow the evolution of the OS. The guide assumes no prior OS development experience and is designed to compare RPi OS implementations with Linux kernel equivalents.

Key Features

Step-by-step lessons from kernel initialization to networking (planned)
Source code snapshots for each lesson in the 'src' directory
Comparison of RPi OS implementations with Linux kernel equivalents
Hands-on exercises at the end of each lesson
Covers ARMv8 architecture (Raspberry Pi 3)
Free and open source under MIT license

Pros & Cons

Pros
  • Well-structured progression from basic to advanced topics
  • Completely free and open source (MIT license)
  • Each lesson includes working source code and exercises
  • Directly compares user's OS to Linux kernel implementations
  • No prior OS development experience required
Cons
  • Targets only Raspberry Pi 3 (ARMv8), not portable to other boards
  • Several advanced lessons (file systems, ELF, drivers, networking) are marked as 'To be done'
  • Limited functionality compared to a full operating system
  • Documentation is primarily in English; translations exist but may be incomplete

Best For

Learning operating system development from scratchUnderstanding Linux kernel internals through a simplified implementationEducational resource for embedded systems and OS coursesPracticing ARM assembly and low-level programming