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.
How I came to find Linux的更多相关文章
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- Linux 内核概述 - Linux Kernel
Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- [linux]阿里云主机的免登陆安全SSH配置与思考
公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- Microsoft Loves Linux
微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...
- Linux 江湖系列阶段性总结
引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...
随机推荐
- 转: Ext拖拽分析
整个Ext架构中组件是其重要的组成部分,除了少部分(如树的结点)的界面表现元素不是在这样的一个体系中,大部分的页面表现元素都被绑定在这个体系之中,下面从这个体系的最底层即在这个继承体系的最高层进行研究 ...
- log4net 部署到服务器之后 无法记录日志问题 解决方法
通常情况下无法记录日志的原因是:权限问题 1. 右键该站点的程序文件夹>>安全 2. 找到 IIS_IUSR 用户,然后编辑权限 允许修改,保存即可 3. 搞定
- 【JdbcTemplete】JdbcTemplete代码详解--模板方法详解
JdbcTemplete类层次结构 JdbcAccessor:对DataSource数据源进行管理和配置: JdbcOperations:定义了通过JDBC操作数据库的基本操作方法: JdbcTemp ...
- php计算字符串长度:utf8编码,包含中文
php计算字符串长度:utf8编码 中文当作1个字符处理(strlen默认当作两个字符) 上函数: /** * 计算 UTF-8 字符串长度 * * @param string $str * @ret ...
- Python之Fabric模块
Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行.文件上传.下载及完整执行日 ...
- SQL Server附加数据库文件出错
场景: 新装一台数据库服务器,装好后,附加数据库时出错.附加前的数据库架构没有在新服务器上安装.新服务器上只有默认dbo架构. 解决: 以windows身份验证登录,附加正常. 错误码可能为5120. ...
- 106. Construct Binary Tree from Inorder and Postorder Traversal
Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- (三)java的数据类型
java是一种强类型的语言,所谓强类型,意味着每个变量都要有确定的类型,每个表达式也要有明确的类型,包括传递的某些参数.java中从大的方面分有两大数据类型,分别是基本数据类型和引用数据类型,基本数据 ...
- visual studio 声明数组太大,导致栈溢出
在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个部分: 1.栈区(stack segment):由编译器自动分配释放,存放函数的参数的值,局部变量的值等.在Windows下,栈是向 ...
- (C/C++) Interview in English - Class
Q: What is a class? A: A class is an expanded concept of a data structure: instead of holding only d ...