Simon Krueger

Tavern kernel

A few days ago I published my hobby project, Tavern. The project is simple unix-like monolith kernel for the Raspberry Pi 3B+ that I built to learn more about kernels. It has been a phenomenal learning experience. I've learned Rust, Raspberry Pi hardware (GPIO, UART, Timers), heap memory allocation algorithms, FAT32 file system implementation, ARMv8-A architecture, context switching, and interrupts.

I started working on Tavern back in 2019, when I self-studied Stanford's CS140e course. I took the course because I wanted to learn about low-level hardware and kernel details. I took operating system courses in college but they were mostly theoretical. I've regretted never signing up for a course like CS140e where I had to build a kernel from scratch. I finished most of the assignments for the course in 2019, but I lost motivation to start assignment 3: Spawn. I find myself now with some free time and motivation, so I started working on the project again a few weeks ago. I had difficulty getting the project building again because the code rotted. It depended on old versions of rust and crates. To get it building again, I restructured the project so that it no longer depended on the std crate or Xargo. I also updated the code base to use features available in the latest version of rust.