Kernel development is never easy and on Apple’s platforms it’s doubly so. Apple provides the Kernel Programming Guide but it’s challenging to go from this to a working kernel extension. This blog addresses that gap with the very pragmatic approach of building a kernel extension from start to finish with a few deviations here and there. I have a soft spot for HPC and filesystems so my choice of kernel extension to build is one for the Lustre Filesystem.
Why a filesystem and why Lustre? Besides my fondness for filesystems, they’re really good for thinking about locking, threading and userspace/kernel interaction. They also show off the issues when dealing with physical hardware. I’ve wanted to do a Lustre macOS client for some time and this is a great excuse to finally do it. It’s also a nice way to show off how kernel networking works. I also think many people could use a macOS Lustre client.
So this blog only about macOS filesystems and Lustre? Nope. I’d get tired of writing about those two thing only. Expect many other posts about XNU security, working with hardware (Thunderbolt, USB, Bluetooth, etc), Apple kernel politics and more.