Upon seeing this, thoughts keep occurring to me such as:
* “It could be fun to be the author of a block layer, VFS and an AHCI driver for SATA. NCQ support is a must if I do.”
* “It could be fun to port ZFS: ztest and zdb, plus the userland version of the driver into which they hook need pthreads, but the important userland utilities do not. Having to statically link everything would be a pain. I would probably have to reimplement the entire SPL for this to work and that would probably be at least 10,000 lines of code.”
* “If I port ZFS, a NFS server needs to follow so ZFS has an application. This will need support for setting/getting user/group ownership and mode bits. If I rewrite the VFS, I could maybe sneak that feature into it for a NFS server to use while preserving the documented syscall behavior that requires everything be root. If I port the NFS server from illumos, it could share the SPL code with ZFS. NFSv4 permissions will be needed to make it fully happy. Beyond that, I will need a network stack.”
* “It could be fun to port a network stack. Maybe LwIP could be used.”
* “It could be fun to write an e1000 driver.”
I have already found the documentation I need if I actually were to implement AHCI and e1000 drivers:https://www.intel.com/content/dam/www/public/us/en/documents...
https://www.intel.com/content/dam/doc/manual/pci-pci-x-famil...
If I were to do all of this, I would likely try my best to make it a production platform. The purpose would be fun.
Anyway, I wonder if these thoughts will continue if I sleep on them.