- A minimal x86 kernel
- Entering Long Mode
- Setup Rust
- Printing to Screen (I started after this one.)
- Allocating Frames
If you’re at all interested in kernels and Rust, you should check out his
posts: It’s rush to see your kernel print
OK for the first time, and it’s
an incredible feeling once pieces of your Rust environment start coming
together, and things begin to snowball.
Once I finished Philipp Oppermann’s series, I started to write my own posts based on his first four posts:
- Low-level CPU I/O ports
- Retarget your compiler so interrupts are not evil
- Configure your PIC to handle interarupts correctly
- Implement kernel interrupts & a keyboard driver
- Writing a heap? Serial output?
Rust’s combination of low-level control, high-level abstractions, and careful attention to memory safety make for a very enjoyable kernel hacking experience. You’ll probably enjoy it most if you have some experience with a systems language like C++ with templates, and some experience with a functional language like Haskell or ML. It’s not everybody’s cup of tea, but apparently it’s just the tool I was looking for.
- blogOS: Full source code for Philipp Oppermann’s blog posts.
- Rust Bare-Bones Kernel: A Rust port of the OSDev “Bare Bones” tutorial.
- Redox: The most complete of the Rust operating systems, by a wide margin. Has graphics, user space, and many ethusiastic contributors constantly adding new features.
In particular, if you want to actually mess around with something that might someday be a complete operating system, Redox looks like fun and they’re accepting patches.