Skip to content

Andrew Tanenbaum and MINIX

Abstract

Andrew S. Tanenbaum, an American professor in Amsterdam, wrote the textbooks from which several generations of students learned computer architecture, networks, and operating systems. When AT&T’s license for Version 7 Unix stopped universities from teaching with the Unix source code, he wrote his own Unix-compatible system, MINIX, and published its full source with his 1987 textbook. A Finnish student, Linus Torvalds, ran MINIX on his new 386, learned from the book and wrote Linux under MINIX. In January 1992, Tanenbaum told him on Usenet that his design was obsolete, which started the best-known argument in operating-system design. MINIX stayed a teaching system until 2005, when Tanenbaum relaunched it as MINIX 3, a microkernel built to repair itself. In 2017, security researchers found that Intel had been running a modified MINIX 3 inside the Management Engine of its chipsets since around 2015, which put Tanenbaum’s microkernel into a very large share of the world’s PCs without his knowledge.

Andrew Tanenbaum
Andrew S. Tanenbaum, 2012. Image: Jantangring, CC BY-SA 4.0, via Wikimedia Commons.

The Physicist Who Moved to Amsterdam

Andrew Stuart Tanenbaum was born in New York City on March 16, 1944. He studied physics at MIT and took a PhD in astrophysics at Berkeley in 1971, then left both physics and the United States. From the early 1970s until his retirement in 2014, he was professor of computer science at the Vrije Universiteit Amsterdam, one of the few Americans to spend a whole academic career in Europe (see European Computer Science Academia).

He became known first as a writer. Structured Computer Organization (1976), Computer Networks (1981), Operating Systems: Design and Implementation (1987), and Modern Operating Systems (1992), together with the distributed-systems texts he wrote with Maarten van Steen, became standard university textbooks of their fields, went through many editions and were translated into many languages. Many of the people who built the operating systems of the 1990s learned the field from them. The ACM gave him its Karl V. Karlstrom Outstanding Educator Award in 1994.

MINIX: Unix for the Classroom

Through the 1970s, universities taught operating systems from the Unix source code itself, most famously through John Lions’ commentary on Version 6. AT&T’s license for Version 7 (1979) forbade using the source in teaching, and the commentary could no longer be legally distributed (see The Unix Story).

Tanenbaum wrote his own system. MINIX (“mini-Unix”), released in 1987 with Operating Systems: Design and Implementation, was system-call compatible with Version 7 Unix, contained no AT&T code, and ran on an inexpensive IBM PC. It was structured as a microkernel: a small kernel passed messages between separate processes that handled files, memory, and devices, the design Tanenbaum considered right both for reliability and for teaching (see Operating System Concepts). The complete source was printed in the book and came on floppy disks for $69, a price set by the publisher, Prentice Hall, whose license allowed copying for study but not free redistribution. A large Usenet community formed around it in the newsgroup comp.os.minix (see Usenet: The Original Online Community).

Users ported it quickly. MINIX 1.5 (1991) ran on IBM PS/2 machines and had been ported to the Motorola 68000 of the Atari ST, the Amiga, and the Macintosh, and to Sun’s SPARC. But MINIX was a teaching system, and Tanenbaum kept it that way: patches that made it bigger and more practical were usually declined, because every added feature made it harder to explain in a course. One of the students running MINIX on a new 386 in Helsinki found that limit frustrating.

“LINUX is obsolete”

On January 29, 1992, Tanenbaum posted to comp.os.minix under the subject line “LINUX is obsolete.” Linus Torvalds’ five-month-old kernel, he argued, was a step backward: a monolithic kernel, with everything in one privileged program, when research had moved to microkernels, and tied to the 386 when portability was the lesson of Unix history.

Torvalds replied the same evening (“your job is being a professor and researcher: That’s one hell of a good excuse for some of the brain-damages of minix”), and Tanenbaum answered the next day: “I still maintain the point that designing a monolithic kernel in 1991 is a fundamental error. Be thankful you are not my student. You would not get a high grade for such a design.” This exchange began the Tanenbaum–Torvalds debate, which others joined over the following weeks. Many researchers agreed with Tanenbaum on the theory. In practice, Linux, with its free license, its working code, and Torvalds’ readiness to accept contributions, won (see The Open Source Revolution). Both men kept their positions for decades with reasonable good humor. Microkernels did find their uses: QNX runs in cars and industrial controllers, the seL4 microkernel was formally verified in 2009 (see Jochen Liedtke and L4), and modern systems move more and more drivers out of the kernel.

Versions and Licenses

MINIX 2.0 (1997), distributed on CD-ROM with the second edition of the textbook, was the first version that conformed to POSIX. In April 2000, MINIX was relicensed under the three-clause BSD license, retroactively for the earlier versions too, which made it free software.

On October 24, 2005, in a keynote at the ACM Symposium on Operating Systems Principles, Tanenbaum announced MINIX 3, no longer only a teaching tool but a research system for self-healing operating systems. Its drivers run as unprivileged user processes watched by a “reincarnation server,” which restarts a driver that crashes, so a driver bug becomes a short interruption instead of a system crash. The work was funded by a grant of 1 million euros from the Royal Netherlands Academy of Arts and Sciences and, four years later, by a European Research Council Advanced Grant of 2.5 million euros, which paid for three researchers and two programmers. MINIX 3.1.5 (2009) added the X Window System; 3.2 (2012) replaced most of its user programs with those of NetBSD; 3.3.0 (September 2014) added support for ARM processors. The last preview release, 3.4.0rc6, appeared on May 9, 2017, and development has been dormant since about 2018.

MINIX 3 in Intel’s Chipsets

Intel’s chipsets contain the Management Engine (ME), a separate small computer that starts before the main processor and runs with more privilege than the user’s operating system, for remote administration and other functions. In 2017, researchers at Positive Technologies, examining a flaw in the ME firmware of Intel’s Skylake generation and later, found that from version 11 the firmware ran a modified MINIX 3. Because the BSD license does not require users to say they are using the code, Intel had never announced it.

Tanenbaum learned about it from the press and wrote an open letter to Intel in November 2017. Years earlier, he recalled, an Intel engineering team had asked him many technical questions about MINIX for an internal project they would not describe, and had asked him to reduce its memory footprint and to make features such as floating-point support removable through configuration flags. He had done so and heard nothing more. “This was a complete surprise,” he wrote. “I don’t mind, of course, and was not expecting any kind of payment since that is not required.” He would only have liked Intel to tell him, “just as a courtesy, that MINIX was now probably the most widely used operating system in the world on x86 computers.” Security researchers were less relaxed about an undisclosed, hard-to-audit computer inside nearly every Intel PC (see Cybersecurity: The Invisible War).

⚠️ Dead End: Amoeba

Tanenbaum’s main research system of the 1980s and 1990s was Amoeba, a distributed operating system built on the idea that a user should log in to a whole network of machines as if it were one computer. Processes ran wherever the shared processor pool had capacity, and files and objects were addressed by capabilities that did not reveal where they were stored. Amoeba worked and was fast for its time, but it found no users outside research. Like Bell Labs’ Plan 9, it answered questions the market was not asking, while cheap Unix workstations and then Linux PCs offered compatibility. Distributed computing eventually arrived as middleware and cloud orchestration on top of ordinary kernels (see Distributed Systems).

Amoeba has one lasting by-product. At CWI in Amsterdam, a programmer working on the Amoeba project needed a scripting language for system administration and, over Christmas 1989, started writing one. The programmer was Guido van Rossum, and the language was Python. The distributed operating system died; its administration tool spread everywhere.

Fun Fact: The Votemaster

In 2004, a website called electoral-vote.com began publishing daily state-by-state forecasts of the U.S. presidential election, run by an anonymous “Votemaster.” On November 1, 2004, the day before the election, he revealed himself as Andrew Tanenbaum, professor in Amsterdam, an American abroad who wanted to follow the election with the tools of a computer scientist. He has run the site through every U.S. federal election since.

📚 Sources