I read a very interesting article about MINIX a couple of years ago but I can't seem to find it now. It went some of the similarities between Linux and that some of design choices by Torvalds were greatly influenced by MINIX as he actually used it himself.
Talks about Minix differences and some reasons why Linux is a monolithic kernel. But this talk is much more focused comparison between the Windows and Linux kernel.
note: video cuts off early too (38 min)
From the video, Mark Russinovich mentions how Linus used and modified the Minix kernel. Linus approached Andrew about using it but Andrew thought adding to it was making the kernel too complex; he wanted to use it as a teaching tool.
So while Linus could not modify the Minix kernel directly, he studied it and took the basic methods that Andrew used without copying the code.
I guess I haven't read Andrew disliking Linux, but it did outperformed Minix in process creation, pipeline, system calls etc by about 20% at the time, and Minix was made for educational purpose whereas Linux was more a project by Linus for his own needs, so he made sure it performed well.
Tanenbaum is a pretty good author as well. If you know what you're doing and read his books the terminology seems like its laughably obsolete and the concepts archaic but then you learn a bit more and you realize he knows exactly what he's talking about. It wasn't until I was talking to Dave Taht (the guy that solved buffer bloat -- a billion dollar problem -- before Cisco would even acknowledge it was a major problem facing the growing internet) that I remembered and recontextualized some of the stuff I'd read in Tanenbaum and it made so much more sense.
Apparently someone is selling computers named Minix so just typing minix into google is now a pain. Tanenbaum's book is now on it's third printing: https://minix1.woodhull.com/osdi2/ Great links page : https://minix1.woodhull.com/links.html Apparently ALLOT has changed since I messed around with it in the 90's
After I installed it and ran a few commands on that old 8088 I had I realized that Minix had almost no software for it and Dos had a about a billion, a million that were free. It was still fun to mess around with and is the only posix compliant unix that would run on an 8088 or 286. This was also at a time when Linux was a toy and Geos was the great hope to break the MS juggernaut.
The current version of MINIX, with its minimalistic kernel, ability to update core components on the fly, and other interesting components like the Reincarnation Server (not unlike Supervisors in Erlang) and isolation of the various components by way of permissions (managed by the kernel), etc. make MINIX very interesting (to me, at least).
The only thing I wasn't able to understand very well was how a driver or other components ask for permissions (on installation and/or later) and how the kernel intrinsically understands that, for example: an audio driver is not supposed to write on the disk. The POLA concept mentioned in the video below is simple to understand, but its implementation is a bit confusing. Can anyone shed some light on that?
Before we run the driver, we must modify the /etc/system.conf file. It contains a list of all system services (servers and drivers) and their permissions.
or you can create a configuration file for the driver and place it in the /etc/system.d
http://wiki.minix3.org/doku.php?id=developersguide:driverprogramming Now we need to give the new time device driver access to the CMOS ports 0x70 and 0x71 using the time.conf file mentioned in the Makefile. Putting it in /etc/system.d/ lets service read it. This is the contents: service time { io 0x70:2; system UMAP # 14 DEVIO # 21 ; ipc SYSTEM PM RS LOG TTY DS VM VFS pci inet amddev ; uid 0; };
Note: I'm a noob with this stuff so take with skepticism.