The book version is a subset of Minix version 3.1.0 (see https://github.com/rochus-keller/Minix3/tree/3.1.0).
The sursprise comes when you try to compile the minimal book version and find out that it is not as lean as presented in the book but actually depends on hundereds of assembler files (see https://github.com/rochus-keller/Minix3/tree/Minix3_Book_TCC).
I’m a tad confused so maybe I’m not understanding the horror show.
Tanenbaum explicitly mentions multiple times that the book is a subset of the code because it would be too long to print with the library. So he covers mostly the main areas.
But the source code, in its entirety, is mounted under /usr/src. And it has all the assembly files in ACK files, mostly in lib I believe. You can compile it with a make command and it works as expected.
The author makes it seem like there’s some terrible thing. Am I missing some gory directory? Yes the ACK syntax would need to be ported over to something more modern like NASM or FASM if someone wants to move the whole kitchen sink, new linker scripts made as a result of exported symbols etc. It is painful but alas, so is the archaic K&R C.
I don’t know if that’s necessary though? It sounds like a waste of time to begin with.
I mean this book is ancient, and nobody really uses 32-bit protected mode. I’m mostly doing it out of curiosity even though I already stood up a small 64-bit long mode thinger.
Let me know what I’m missing!
The author writes in the book explicitly "This is a modified version of config.h for compiling a small Minix system with only the options described in the text". This confirms that the book indeed describes a working microkernel of less than 15kSLOC which can be built and run (even if the "small Minix" lacks a few features). I blieved the author (like generations of other scholars) until I tried to actually build and run it.