I saw an article the other day, repeating the mistaken view that there was Minix code in an early version of Linux. I knew that was not true, because for one thing Linus told us it was not true years ago. And Andrew Tanenbaum confirmed that Linus didn't use any Minix code, as did Eric Raymond. But here's some evidence for you cynics out there that I hope will settle that issue once and for all. It will at least make our historical record on Groklaw more complete. Anyway, it's our policy to provide all the evidence we can find, because I know you'd like to see it for yourself, not just listen to others' conclusions.
First, let's look at a comp.os.minix comment from Linus Torvalds on August 26, 1991. The date matters, because it is pretty much contemporaneous with the beginning of the kernel and because he obviously was never expecting SCO to make such a false claim in 2003. The subject is, What would you like to see most in minix?:
Hello everybody out there using minix - That isn't the famous October 1991 post ("Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers?"), which you can find here and here, where again he says there is no Minix code, which is why he is free to provide full source code. Here's the relevant part of another Linus post from May 18, 1992, in response to someone's questions:
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).
I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)
PS. Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.
I get the feeling you think linux evolved from minix? This is not true: linux was written under minix, and while linux superficially resembles minix386, it's really not that close to minix in any way... The most minix-like feature in linux is the filesystem: due to practical reasons I wanted to have the same physical layout of the disk as in minix. So they aren't particularly similar even with respect to ideas or ways of doing things. I couldn't help but notice that right afterward, Guy Eckhardt wrote to the original questioner that instead of trying to get the Lions book on Unix, he should try BSD:
Reading Tanenbaum is good for a general idea of operating systems, but it's generally not worth it to read the minix specific bits in order to understand linux (reading the minix source code in order to understand the genera idea might be worth it). While the filesystem has the same physical layout, multithreading means locking etc needs to be done totally differently etc. The kernel proper also uses totally different design ideals, and the device drivers are also very different (ie they use interrupts directly instead of waiting for hardware messages etc).
Lastly, minix and linux memory management is fundamentally different: linux uses paging on a very low level for everything: minix uses a heap-like memory management strategy, I think.
As to the shell under linux: there are several (although bash is the only one I use), and the same shells are generally available for minix as well (not standard PC-minix: it can't run tcsh/bash due to the 64kB limit). The standard minix shell isn't available for linux (not that big a loss: the minix shell doesn't do your mental sanity much good): ash is probably the closest thing.
I don't know about /bin/init: I never looked at the sources under minix, and I haven't exactly dissected it under linux either....
If you're interested in studying a "real" Unix source, take a look at BSD Net-2 - it's still incomplete, but much of it is there. And so the rivalry begins....: D
Just kidding around. I think he actually meant that it was easier to get a look at the source. And Linus answered another question in September of 1992, after someone asked if anyone could tell him in a few words what linux was:
Linux is a unix-like OS for the 386 - it's *not* available for any other architecture (and it currently doesn't work even on PS/2 (ie MCA) machines). Like minix, it comes with full source code, and is copyrighted. Unlike minix, it's freely re-distributable under the GNU copyleft (ie it doesn't cost you anything if you have ftp access). Later, he wrote that Minix was "fatally flawed". If you wish to see Linus wax poetic on the Minix flaws, here you go -- scroll down.
Linux has some ties the the minix community: I originally used minix for linux developement, and the standard filesystem is still mostly compatible with the original minix fs (ie you can mount the same partitions both from minix and linux). That's about the only thing minix/linux have in common any more, but it may make a transition easier.
The best way to get a picture of linux is probably to read comp.os.linux for a while, and/or ftp to 'tsx-11.mit.edu' (pub/linux) or 'nic.funet.fi' (pub/OS/Linux) and try it out. Documentation isn't too hot (if you are timid about that, you should probably get minix or coherent), but it's possible to set up a linux system even with very limited unix knowledge.
Linux runs in full 32-bit protected mode, giving each process a 3GB process space (1GB used for virtual kernel memory). It supports paging to disk, shared libraries etc, and runs about everything from gcc to X11r5. 2MB physical RAM minimum, with >=4MB preferred for good performance.
Linux supports virtual filesystems: the standard kernel understands the minix fs, DOS disks (non-stacked), and a ext-fs format, giving 255 char character names and bigger partitions than the minix format. There are also patches for a xenix-filesystem mode as well as for actual emulation of some xenix binaries (but this isn't part of the standard kernel).
Additional patches include tcp/ip (which will be in the next major release, probably next week), a soundblaster driver and a CDROM fs. There is some work going on to use linux as the base for the FSF single-server (ie not Hurd, but a simpler unix-server) on top of mach-3.0, but this is so far only in it's infancy. Additional info from the newsgroup and ftp-sites.
I'd also suggest you check out "comp.os.coherent" and "comp.unix.bsd" for other alternatives to DOS - while I obviously think linux is the best of minix/linux/coherent/386bsd, there are those who disagree:
Minix is good for education (source, the book), coherent for simpler home use (easier installation, manual), linux for hacking (source, completeness) and 386bsd for people who simply want "the real McCoy" (source, compatibility). Linux and 386bsd are both freely distributable, although under different conditions, while minix and coherent are commercial (although cheap: $169 v $99 USD).
Hopefully this article will clear it up once and for all, and I'll never again have to write about Minix. Hardy har. I know. SCO never gives up.
For historians, then, here's the thread, the famous debate between Andrew Tanenbaum and Linus, et al, beginning in January of 1992 ("Linux is dead") on which design was the best (microkernel or monolithic), a debate made possible by the fact that the designs were so totally different. Note that Linus in his first reply ("Minix is nice if you have nothing else...") says this about Minix: "Not to mention the fact that most of the good code for PC minix seems to have been written by Bruce Evans." SCO keeps harping on the Minix theme, I have always assumed, because they wish to claim that Linus infringed copyrighted code and/or methods and concepts, which it would then claim was a derivative work of Unix. The Minix source license was changed to the BSD license in 2000, so if Linus had used earlier Minix code, perhaps they thought it conceivably could have been an issue. Here's the license as modified in 2005. And if you've always wondered what Minix looks like, here are some screenshots.
I'd say the evidence is overwhelming that anyone claiming there is, or ever was, any Minix code in Linux -- or even significant similarities -- is barking up the wrong tree.
Why debunk it again now, after we've so thoroughly debunked it before? Because it's one thing for a man to tell you he didn't do something after he's been sued over it; it's another for the contemporaneous words to demonstrate that what he is saying years later is in fact the truth. There never was any Minix code in Linux.