How I came to find Linux
http://ianmurdock.com/post/how-i-came-to-find-linux/
lan murdock
August 17, 2015
I saw my first Sun workstation in the winter of 1992, when I was an undergraduate at Purdue University. At the time, I was a student in the Krannert School of Management, and a childhood love of computers had just been reawakened by a mandatory computer programming course I had taken during the fall semester (we were given the choice between COBOL and FORTRAN—which even in 1992 seemed highly dated—and I had picked COBOL because it seemed the more “business” of the two).
Ten years or so earlier, my father, a professor of entomology at Purdue, had replaced his typewriter at work with an Apple II+. Thinking his nine-year-old son might get a kick out of it, he brought it home one weekend along with a Space Invaders-like game he had bought at the local ComputerLand. I spent hours on the computer that weekend. Before long, I was accompanying Dad to the lab at every opportunity so I could spend as much time on the computer as possible.
Being a nine-year-old boy, I was, predictably, attracted by the games at first, and my interest in games led to my first exposure to programming: computer magazines that included code listings of very simple games, which I would laboriously key in to the Apple—and, after hours of toil, hope that I hadn’t made a mistake (the Apple II, at least out of the box, utilized a simple line editor, so going back and making changes was very tedious, not to mention finding the errors in the first place).
Not long after, I met Lee Sudlow while hanging around the lab on weekends. Lee was one of Dad’s graduate students and had begun to use the Apple to assist in his experiments. Lee was always happy to explain what he was doing as I hovered over his shoulder watching, his helpfulness no doubt motivated—at least in part—by the fact that the snot-nosed nine-year-old scrutinizing his every move was his faculty advisor’s son. Oblivious to such things, I watched with fascination as he punched code into the Apple—code that he thought up himself, not code that he was reading from a computer magazine.
Between learning by example through studying the code in the magazines and Lee’s occasional tutelage, I was writing games and other simple programs before long, first in Applesoft BASIC and, later, in 6502 assembly language. To encourage my growing interest, Dad eventually bought an Apple IIe for home, and my love affair with the computer continued for several more years. However, as I entered my teenage years, the computer was gradually replaced with more pressing things, like baseball, music, and girls, and by the mid-1980s, the Apple was gathering dust in my bedroom closet alongside my collection of Hardy Boys novels and Star Wars action figures.
My obsession with the computer lay dormant for the next half-dozen years until it was fortuitously reactivated during that COBOL course in the fall of 1992. When the course ended, I naturally lost my account on the IBM 3090 mainframe where we did our assignments and lab work. Fortunately, as a student, I was entitled to a personal account on one of the university computing center’s machines, either the IBM or one of three Sequent Symmetry minicomputers running DYNIX, a variant of the UNIX operating system. A friend convinced me that UNIX was more interesting and had a brighter future than IBM’s VM/CMS, and I took his advice and applied for an account on one of the Sequent machines. The following week, I was the proud owner of an account on sage.cc, complete with the princely allocation of 500 kilobytes of disk storage. (Yes, I’m being sarcastic—500 kilobytes was a miserly sum, even for 1992. I eventually found ways to circumvent it.)
My appetite for UNIX was ravenous that winter. I spent most evenings in the basement of the MATH building basking in the green phosphorescent glow of the Z-29 terminals, exploring every nook and cranny of the UNIX system upstairs. It was eerily quiet in those terminal rooms, the only sound being the clack clack clack of a few dozen keyboards and the occasional whisper of, “Hey, look at this…” Often, after an evening of exploration, I would exit the building the long way, walking past the plate glass window where the computing center housed its machines, gazing in awe at the refrigerator-sized Sequent Symmetry I had just been using, watching the blinking lights and knowing that hundreds of people were still inside, if only virtually, thanks to the magic of time-sharing, a technique advanced computers used to divide the machine’s computational power among many users, providing the illusion that each user was the only one. Above all, I looked with envy at the system operators privileged enough to sit on the other side of that plate glass window wielding the almighty power of the “superuser” at the system console.
Unsatisfied with the Z-29s, I began prowling around campus after dark with a friend, Jason Balicki, to see what else could be found. Jason had been in the computer science program for a few years, so he knew where to look (though we did our share of new exploration—that was part of the fun—entering buildings at night and trying the doorknobs of rooms that looked like they might hold computers to see if they were unlocked).
The best labs, I learned, were in the engineering administration building (referred to around campus by its unfortunate acronym, ENAD), where several rooms of X terminals offered a grayscale graphical interface to the Sequent and other UNIX machines around campus. Soon, my preferred “hacking” spot (a term Jason had introduced to me) was in one of the X terminal labs, which were technically only for engineering students, a restriction that was not enforced by passwords—and that we dutifully ignored.
But the motherload of the ENAD building was to be found in its labs of Sun workstations. Unlike the lowly Z-29s and even the comparatively advanced X terminals, the Suns were things of beauty, with sleek cases and high-resolution color displays. Furthermore, Jason explained that they ran the best UNIX there was, SunOS, though the Suns were considerably better locked down than the X terminals, requiring an account on the engineering computer network to access them, so I didn’t get a chance to actually get my hands on SunOS until much later.
I was also accessing UNIX from home via my Intel 80286-based PC and a 2400-baud modem, which saved me the trek across campus to the computer lab on particularly cold days. Being able to get to the Sequent from home was great, but I wanted to replicate the experience of the ENAD building’s X terminals, so one day, in January 1993, I set out to find an X server that would run on my PC. As I searched for such a thing on Usenet, I stumbled across something called “Linux.”
Linux wasn’t an X server, of course, but it was something much better: A complete UNIX-alike operating system for PCs, something I hadn’t even contemplated could exist. Unfortunately, it required a 386 processor or better, and my PC only had a 286. So, I began to save my pennies for a machine fast enough to run it, and while I did that, I devoured everything I could get my hands on about the object of my desire. A few weeks later, I posted a message to Purdue’s computing interest Usenet group asking if anyone on campus was running Linux—and got one response, from a computer science student named Mike Dickey, who happily invited me over to show me his Linux setup. Inspired, I bought a box of thirty floppy diskettes and began the slow process of downloading Linux to the floppies from a PC lab in the Krannert building, though it would be another month before I could afford an actual computer on which to install it. Finally, I could wait no longer, and Jason and I found an unlocked computer lab in one of the dorms containing a single PC, and in the middle of the night one evening in February, we proceeded to install Linux on that lab PC. I still occasionally wonder what the unfortunate student first to the lab the next morning must have thought.
Linux had been created about a year and a half before by Linus Torvalds, a twenty-one year old computer science undergraduate at Helsinki University. A long-time computer enthusiast, Torvalds had followed a path roughly similar to my own, though he began his programming career on a Commodore Vic-20, and he hadn’t gotten distracted by the more traditional interests of teenage boys as the ’80s progressed. Torvalds’ first exposure to UNIX was in 1990 during a course at the university, and like me, it had been love at first sight.
In the fall of that same year, Torvalds took a course in operating systems that used the textbook Operating Systems: Design and Implementation by Andrew Tanenbaum, a professor of computer science at Amsterdam’s Vrije Universiteit. Tanenbaum’s book taught operating systems by example through a UNIX clone for PCs he had written called MINIX, and his book included the complete source code—the human readable (and editable) programming code—for MINIX along with a set of floppy diskettes so that readers could actually install, use, and modify the operating system.
Intrigued, Torvalds bought a PC in early 1991 and joined the burgeoning MINIX community, tens of thousands strong and largely held together by the Usenet newsgroup comp.os.minix. He began experimenting not only with MINIX but also with the new task-switching capabilities of the Intel 80386 processor that powered his PC. (Task-switching makes it easier to run more than one program on the processor at the same time, one of the requirements of a time-sharing system like the Sequent Symmetry I would discover the following year at Purdue.) By the summer of 1991, Torvalds’ experiments with task-switching were beginning to evolve into a full-blown operating system kernel, the basic piece of software in an operating system that mediates access to the CPU, memory, disks and other devices in the computer and provides a simpler interface to these basic computing functions that allows complex applications to be written more easily.[i]
MINIX was not the only “hobbyist-friendly” operating system project that existed in 1991, though it was one of only a handful that was complete enough to be usable, and one of only a few that would run on the lowly PC. The best-known operating system project by far was GNU, presided over by Richard Stallman. Stallman, who had been programming since the mid-1960s and had been a systems programmer at MIT from 1971 to 1983, was an old school “hacker,” someone who engages in computing for its own sake and believes, militantly in some cases (including Stallman’s), that all information should be freely shared.
The GNU project’s goal was to produce a free operating system (free not only in price, but also free in the sense that it could be freely modified) that was compatible with UNIX (GNU was a so-called recursive acronym for “GNU’s Not UNIX,” so-called because it employed a powerful technique often used by programmers called recursion that involves a computation using itself as one of its inputs). Stallman launched the GNU project in 1983 in response to the growing market for proprietary software, software for which the source code could not be modified and was often not even available.
Proprietary software was a fairly new development in the early 1980s and, to Stallman, a very disturbing one. Up to that point, software had largely been distributed freely with hardware, and hackers often shared copies of its source code along with their own changes and improvements. Stallman considered the growing trend toward proprietary software nothing short of the first step toward a digital 1984 in which computer users, and eventually all of society, would be held captive by greedy corporate interests, and he was determined to stop it.
By mid-1991, Stallman and a loosely-knit group of volunteers had assembled most of the GNU operating system—a compiler, a debugger, an editor, a command interpreter (or “shell”), and a variety of utilities and programming libraries that were just like UNIX, only better—the GNU versions were almost universally held to be superior to their namesakes. The only piece that was missing was the kernel, and a small team had just been created at Stallman’s Free Software Foundation, a non-profit organization he had formed in 1985 to oversee development of GNU and serve as a guardian of sorts for free software, to write that final piece. Hackers around the world believed it would just be a matter of time until GNU was finished and available, and they would finally have an operating system free of corporate encumbrances.
Half a world away, Torvalds’ own operating system kernel was becoming complete enough to release to the world. In a now-famous Usenet posting to comp.os.minix on August 25, 1991, he wrote:
Hello everybody out there using minix –
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).
The response was immediate and overwhelming. While everyone expected GNU to be done imminently, it was not available yet, at least not in a form that could be used without a UNIX scaffolding underneath. And while MINIX was popular, it was not free, though it was certainly inexpensive compared to the other UNIXes. Perhaps most importantly, though, MINIX was intended primarily as a teaching aid, not production software, so Tanenbaum was loathe to include many of the patches, or changes to the operating system, that extended its capabilities which flowed in daily from hordes of enthusiastic users around the world, fearing their addition would make MINIX too complicated and, thus, harder for his students to understand.
The lure of a UNIX-like operating system for PCs, no matter how imperfect, that was free and could evolve at the speed its community wanted it to evolve was too much for many MINIX users to resist, and they began flocking in droves to Torvalds’ new OS, which in the fall of 1991 would be dubbed “Linux.” But Linux was just a kernel—it required a variety of tools and applications be installed on top of it to make it actually do anything useful. Fortunately, most of these already existed thanks to Stallman’s GNU project.
By 1992, a few intrepid users began to assemble sets of floppy diskette images that combined Linux with the GNU software tool chain to make it easier for new users to get up and running. These collections (later called “distributions”) got progressively better, and by the time I finally got my PC in March of 1993, the Softlanding Linux System (or SLS) distribution had expanded to those thirty diskettes and now included a wealth of applications—and, yes, the very same software that powered the X terminals in the ENAD building.
I never did get around to trying to connect the Linux-based X server now on my PC to the Sequent, which would have been painfully slow at 2400 baud—several thousand times slower than the speeds of today—anyway. Now I had my very own UNIX to explore right there on my desk. And explore I did, in a veritable UNIX crash course. Once I got over the thrill of being the “superuser,” the unspeakable power I had previously seen only behind plate glass, I became enraptured not so much by Linux itself as by the process in which it had been created—hundreds of people hacking away at their own little corner of the system and using the Internet to swap code, slowly but surely making the system better with each change—and set out to make my own contribution to the growing community, a new distribution called Debian that would be easier to use and more robust because it would be built and maintained collaboratively by its users, much like Linux.