A tiny kernel incrementally built for OS education.
We wills start with a minimal, baremetal code piece. Then we will add a set of kernel features in small doses through a series of experiments.
Each experiment is a self-contained and can run on both Rpi3 hardware and QEMU.
The kernel must run on cheap & modern hardware.
Showing the kernel's evolution path is important. Along the path, each version must be self-contained runnable.
We deem the following kernel functions crucial to implement:
- protection modes
- interrupt handling
- preemptive scheduling
- virtual memory
Experimenting with these features is difficult with commodity kernels due to their complexity.
Primary:
- Learning by doing: the core concepts of a modern OS kernel
- Experiencing OS engineering: hands-on programming & debugging at the hardware/software boundary
- Daring to plumb: working with baremetal hardware: CPU protection modes, registers, IO, MMU, etc.
Secondary:
- Armv8 programming. Arm is everywhere, including future Mac.
- Working with C and assembly
- Cross-platform development
Non-goals:
- Non-core or advanced functions of OS kernel, e.g. filesystem or power management, which can be learnt via experimenting with commodity OS.
- Rpi3-specific hardware details. The SoC of Rpi3 is notoriously unfriendly to kernel hackers.
- Implementation details of commodity kernels, e.g. Linux or Windows.
Derived from the RPi OS project and its tutorials, which is modeled after the Linux kernel.
Board manual: Rpi3 board pinout
SoC manual: Bcm
ARM64:
- Sharpen your tools!
- Helloworld from baremetal
- Exception elevated
- Heartbeats on
- Process scheduler
- A world of two lands
- Into virtual