Thoughts on MINIX and whether it's a potential Linux, Windows, and MacOS competitor

I've been checking out alternative operating systems to Linux, Mac OS, and Windows, and came across Andrew Tanenbaum's MINIX operating system (whose first version inspired the creation of Linux):

I personally think that it seems very promising . . . and oddly similar to the way the Erlang virtual machine (a.k.a. BEAM) works. . . .

What are your thoughts on it?

(@wendell and Ryan, would you guys be interested in making a video with your opinions on it?)

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.

I guess the main design change Linus made was that Linux was developed as a monolithic kernel while Minix was a micro kernel

1 Like

Yea, Andrew Tanenbaum disapproved the use of a monolithic kernel and even went as far as to call Linux obsolete at the time because of this.

Slightly relevant (from 2004).

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.

1 Like

GNU Hurd is the future.

1 Like

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.

2 Likes

I never got it to run on a PS/2 but I did get it to run on an IBM PC 5150 (the 5 slot one)
They do have 286 and 386 versions. (outdated, never mind )
Great place to start: http://minix1.woodhull.com
Newer Minix : http://www.minix3.org
Another great site : http://phoenix.anomic.net/minix.html

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.

Cool cp/m link page : http://www.cpm.z80.de

2 Likes

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?


(Fast forwarded to the 10 min, 56 sec mark)
1 Like

Andrews opinion on Hurd (from OP's video).

Basically he says, "where is it?"

I'm not knowlegable on Hurd at all, but Debian seems to be the only people working on it? Ver 0.8 as of 2016-05-18.

1 Like

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.

Source: https://prezi.com/bjogsb5l5dg3/minix-device-drivers/

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.

1 Like