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.