首页 > 代码库 > Linux简史
Linux简史
原著:Ragib Hasan
Department of Computer Science
University of Illinois at Urbana-Champaign
翻译:王晓林
混沌初开
那是在一九九一年,令人痛苦难耐的冷战渐渐走到了尽头。和平安详的空气开始升起在地平线。在计算科学领域,随着强大硬件的推出,计算机的极限能力已超出了我们的想象,一个辉煌的未来似乎已渐露端倪。
但还是缺了点儿什么。在操作系统领域,存在着一片巨大的空白。
一方面,DOS还统治着庞大的个人电脑王国。比尔盖茨花$50,000从一个西雅图黑客手中买来DOS。之后,靠着聪明的市场策略,这个简陋的操作系统悄悄渗透到了世界的每一个角落。PC用户没有其它的选择。苹果机虽好,但它的天价没人能承受得起。它和大众需求保持着遥不可及的距离。
计算领域的另一个阵营是UNIX世界。但UNIX更是贵不可攀。为了追求高额利润,UNIX销售商把价格抬得足以吓跑随便哪个PC用户。贝尔实验室曾慷慨地提供UNIX的源代码给大学。但现在,这些源代码被小心地看管起来,不再对外公开。更令全球PC用户心烦的是,软件市场的大玩家们没能为解决这一问题提供个有效的方案。
MINIX似乎是个选择。它是在荷兰当教授的美国人Andrew S. Tanenbaum从零开始编写出来的。他写MINIX的目的是为了向学生讲授操作系统的内部工作原理。MINIX的设计面向当时最为流行的Intel 8086微处理器。
作为一个操作系统,MINIX算不上一流。但它的好处是你能得到它的源代码。只要你有Tanenbaum写的《操作系统:设计与实现》这本书,你就能得到那12,000行用C和汇编写的源码。头一次,程序员或黑客可以有机会读一读操作系统的源码--这种被软件商严加看管的东西。Tanenbaum用详尽简洁的笔触探讨了编写操作系统的艺术。他是个一流的作者,迷住了一批当时计算机领域最聪明的大脑。全世界学计算机的学生都在钻研这本书,通过读它的源码来了解他们电脑里运行的MINIX操作系统。
Linus Torvalds就是这些学生中的一个。
呱呱坠地
在1991年,Linus Benedict Torvalds还是个芬兰学生,在赫尔辛基大学念计算机专业二年级。同时他也是个自学成才的黑客。这个长着沙滩黄头发、说话软绵绵的二十一岁芬兰帅哥喜欢折腾他的电脑,把它不断推向能力的极限。但他缺少一个合适的操作系统来满足他如此专业的需求。MINIX不错,可它只适合学生,是个教学工具,而不是一个强大的实战系统。
当时,全世界的程序虫们都很看好Richard Stallman的GNU项目---一个致力于推出自由、高质量软件的运动。在计算科学的王国里,Stallman是个倍受尊崇的神话式英雄。他令人景仰的职业生涯是从大名鼎鼎的MIT人工智能实验室开始的。七十年代中后期,他在那里开发出了著名的Emacs编辑器。八十年代早期,商业软件公司从人工智能实验室吸引走了绝大多数优秀的程序员,并和他们签署了严格的保密合同。Stallman为此大大不爽。他认为软件和其它产品不同,在复制和修改方面它不该受到任何限制。只有这样,才能开发出更好更强的软件。1983年,他在著名的《GNU宣言》中,向世人宣告了GNU项目的启动,开始了贯彻其哲学的自由软件运动(顺带一句,GNU一词是‘GNU‘s Not Unix’的递归缩写)。为了最终实现开发出一个自由操作系统的梦想,他得先制造些工具。于是,在1984年初,Stallman开始创作一个令商业企业程序员叹服的作品--GNU C编译器(gcc)。他出神入化的技术天才,令所有商业软件程序员自愧不如。gcc被公认为世界上最高效最强健的编译器之一。
Richard Stallman,GNU项目的创始人
到1991年,GNU项目已经开发出了众多的工具软件。大家期待已久的GNU C编译器也问世了。但自由操作系统还没有。MINIX也是受版权约束的(后来,在2000年4月,Tanenbaum在BSD许可证下发布了自由的MINIX)。GNU操作系统内核--HURD--还在开发之中,几年之内还不可能面世。
拖了这么久,终于该说说Linus了。
1991年8月25号,Linus在MINIX新闻组发出了历史性的一贴...
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Hello,各位使用minix的朋友,
我正在写一个基于386(486)AT机器的(自由)操作系统(只是出于爱好,不会做得象gnu那么大、那么专业)。我从四月份开始酝酿,现在已经做得差不多了。我现在想知道一些你们对minix的看法,它哪点好?哪点不好?因为我这个操作系统和 minix多少有点儿类似(文件系统采用同样的物理布局(因现实原因),其它方面也有类似的地方)。我已经把bash(1.08)和gcc(1.40)移植过来了,它们好象还工作。这意味着在下面几个月里,我将给它加上更多实际的功能。所以我想知道大家都希望它有哪些功能。欢迎多提建议,但我不敢保证能实现你的建议 :-)
Linus (torvalds@kruuna.helsinki.fi)
PS. 没错,它不包含任何minix的代码,而且它有一个多线程文件系统。它现在不能在其它硬件上转(因为用了386任务切换机制,等等),而且除了AT硬盘,它基本上不支持任何其它硬件。这就是我的全部了 :-(。
从这个帖子不难看出,Linus自己并没预料到他的小创造将有本事改变整个计算科学领域。1991年9月中旬,Linux 0.01版问世了,并且被放到了网上。它立即引起了人们的注意。源代码被下载、测试、修改,最终被反馈给Linus。10 月5号,0.02版出来了,同时伴随着Linus著名的声明:
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Free minix-like kernel sources for 386-AT
Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
Date: 5 Oct 91 05:41:06 GMT
Organization: University of Helsinki
你在怀念minix-1.1时代的美好时光吗?那时你自己写着驱动,充满了成就感。现在没什么好项目可做了,是吗?你在拚命啃一个操作系统,修改它以满足你自己的需要,是吗?现在minix已经没什么需要你去改进的了,你为此怅然若失,是吗?没机会再熬通宵去改进一个小程序了,是吗?如果是这样的话,那这个帖子就是给你的 :-)
一个月(?)前我曾经提到过,我正在一个AT-386计算机上开发一个自由版本的、类似minix的操作系统。现在它终于可以用了(尽管未必能满足你的期待)。我乐意把源代码公开出来,让它传播得更广。它现在仅仅是0.02版(外加一个(很小的)补丁)。但是我已经成功地在它上面跑了 bash/gcc/gnu-make/gnu-sed/compress等程序。我这个小宝贝儿的源程序在 nic.funet.fi (128.214.6.100) 下面的 /pub/OS/Linux 目录中可以找到。该目录中还有些 README 文件,还有几个在linux下能工作的可执行文件(bash,update和gcc,你还要求些什么呢 :-)。完整的内核源代码都在这儿了,因为没有用到minix 的源程序。函数库的源程序只是部分开放,所以目前还不能提供出来。拿到源代码后,直接编译就行了。编译完就能转了。哈哈。可执行程序(bash和gcc)的源代码可以在同一网站的/pub/gnu目录里找到。
几周以后,Linux 0.03版发布了。12月份,0.10版发布了。这时的Linux还显得很简陋。它只能支持AT硬盘,而且不用登录(启动就进bash)。0.11版有了不少改进,可以支持多国语言键盘、软驱、VGA、EGA、Hercules等等。Linux的版本号从0.12直接上升到了0.95、0.96......不久,Linux的源代码就通过在芬兰和其它一些地方的FTP站点传遍了全世界。
冲突与发展
Linus在展示一台Linux笔记本电脑
不久,Linus开始面对挑战。他面对的不是别人,正是Andrew Tanenbaum,那个开发出MINIX的伟大教师。在给Linus的一个回贴中,Tanenbaum写到:
“我还是坚持我的观点,在1991年还设计这样一个整体架构的内核是个根本性的错误。你该庆幸不是我的学生。这么个设计,在我这儿你得不了高分 :-)”
(Andrew Tanenbaum to Linus Torvalds)
Linus后来承认说,这是他关于开发Linux所得到的最坏评价。Tanenbaum是当时的知名教授,他说的话自然很有份量。但这次面对Linux,他的话没能奏效,因为Linus不是个轻易服输的人。
Tanenbaum还说:
“Linux过时了。”
现在轮到新的Linux一代开始反击了。以强大的Linux社区为后盾,Linus给了 Tanenbaum一个恰如其分的回复:
你的工作是教授、研究员。这对于minix的大脑损伤是个绝妙的解释。
(Linus Torvalds to Andrew Tanenbaum)
Linux的开发在继续。不久,加入开发的人数就超过了一百,然后是数千,然后是数十万。Linux不再只是个黑客的玩具,配合上GNU项目开发出的众多软件, Linux已经可以走向市场了。它最终在GNU公共许可证下发布,这保证任何人都可以自由获得它的源代码,可以自由复制、学习和修改它。学生和程序员们都没错过这个机会。
不久,软件商们也来了。Linux是自由的操作系统。软件商们需要做的只是把各种各样的软件在Linux平台上编译,然后把它们组织成一种可以推出上市的形式。这和其它操作系统在运作模式上没什么区别,只是Linux是自由的。Redhat、 Caldera、和其它一些公司都获得了相当大的市场,获得了来自世界各地的用户。除了这些商业公司,非商业的编程专家们也志愿地组织了起来,推出了他们自己的品牌--享誉全球的Debian。配上崭新的图形界面(比如X Window、KDE、 GNOME),Linux的各个品牌都倍受欢迎。
好戏连台,惊喜不断。除了PC机,Linux又被移植到了许多其它平台上(PowerPC、Sun Sparc、ARM、Alpha...Debian就支持十几种CPU)。它还被人安装到了3com的手掌计算机上。另外,利用集群技术,许多Linux单机可以被组织成一个整体,用于并行计算。1996年4月,Los Alamos国家实验室的研究人员利用68台 Linux单机搭建了一个并行计算系统,用它来模拟原子弹爆炸的冲击波。与其它超级计算机不同的是,用Linux搭建的集群计算机非常便宜。这种DIY出来的超级计算机只花费$152,000,连人工(连接68台PC的线缆)都包括了。这价格只是同级别商业机的十分之一。它的峰值计算速度可达每秒19万亿(billion)次。在世界最强的超级计算机中它排在第315位。它也极其稳定可靠,投入运行三个月后,还不必去重启动。
今天锋芒毕露的Linus
今天,Linux最大的优势就是推动它前进的巨大开发热情。一旦有新硬件问世, Linux内核就能快速被改进以适应它。比如,Intel Xeon微处理器才问世几个星期,Linux新内核就跟上来了。它还被用在了Alpha、MAC、PowerPC上。甚至在手掌机这一少人问津的领域都可以运行Linux。正如它在1991年诞生时那样,Linux正以同样的热情阔步走向新世纪。
Linus在2002年
至于Linus本人,他保持着简单的生活。不象比尔盖茨,Linus不是亿万富翁。完成学业之后,他移居美国,在Transmeta公司找了个工作。Transmeta公司在指导完成了一个绝密项目的研发之后,推出了自己的Crusoe处理器。Linus是这个研发小组中活跃的一员。最近,他和Tove结了婚,生了个女儿,取名Patricia Miranda Torvalds。世界范围内的计算机社区都对Linus推崇备至,到目前为止,他是我们这个星球上最受欢迎的程序员。
全家福
风雨十年
Linux的开发已经走过了十个年头。它用十年的蓬勃发展否定了所有持怀疑态度的警告和预言。今天,Linux是有史以来发展速度最快的操作系统之一。从91、92年的几个技术狂热者发展到今天数以百万计的普通用户,这绝对是个不平凡的历程。大商业公司们“发现”了Linux,将数以百万计的美元倾入到开发中来,这一事实无情地驳斥了“开源运动反商业”的谬论。IBM曾经视开源社区为洪水猛兽。而现在,它已经将大量的资金转移到以Linux为平台的开源解决方案中来。
但真正让人感到惊喜的是,Linux开发团队持续不断地壮大,并在世界范围内扩散开来。这些开发者以旺盛的精力和高涨的热情不断改进着Linux的功能和性能。Linux的开发工作并没有象“代码封闭论者”所妄言的那样“最终消失在一片混乱之中”。正相反,Linux的开发是有组织有秩序的,它采用的是一种精心设计并被细心维护的开发模式。在这一高效开发模式下,数以千计的开发者们把各种各样的应用软件注入到Linux平台中来。
商业企业不再对Linux心怀戒惧,因而大量的软件商开始提供Linux平台上的产品支持,软件质量有了更可靠的保障,在办公室里用Linux不必再有“风险自负” 的担心了。说到可靠性,Linux在1999年CIH病毒肆虐和一年后的‘爱虫’病毒流行时,证明了自己的强健。这些相当简单的小病毒把世界搞得一团糟,而所有的Linux机器却丝毫不受影响。这充分显示了它出色的免疫力。当Redhat这样的 Linux排头兵走向市场的时候,它们受到了热烈的欢迎。甚至在近几年dot-com 网络泡沫破灭之后,它们还在持续蓬勃地发展壮大。这也大大增强了人们对 Linux的信心,许多大大小小的商业公司开始采用Linux作服务器和工作站平台,把Linux作为办公室系统的可靠支撑。
Linux桌面应用的崛起
那么,针对Linux人们报怨最多的是什么呢?在过去,也许就数它的字符界面了。很多对Linux感兴趣的人被传统的字符界面吓着了。“字符界面可以让你无所不能”,一些执着的黑客会向你这样辩解。但对于数百万的普通用户,这意味着要花费大量的时间和精力去学习它。现成的X Window图形界面和窗口管理器并不能满足普通计算机用户的期待。这一直是MS Windows追随者们的攻击把柄。但在过去的几年间,情况发生了改变。象KDE和GNOME这样非常专业的桌面环境呈现在了人们的面前。这些桌面环境的较新版本使人们对Linux的“用户友好性” 有了更好的认识。尽管一些铁杆用户在报怨,图形化使黑客文化失去了其原有的纯正品位。但图形化大大改善了Linux在普通用户心目中的形象,促进了 Linux的流行与推广。
Linux在第三世界
Linux 在发展中国家得到了广泛的传播?这也许是它对世界影响最大的地方。在Linux出现之前,发展中国家在计算科学领域大大落后于西方。硬件价格虽然不断下滑,但在第三世界国家,软件的高昂价格一直是有热情、没银子的计算机爱好者们的巨大负担。无奈中,他们只能求助于各种各样的盗版软件。这直接导致了盗版的泛滥,盗版金额达数万亿美元。话又说回来,大多数商业软件的标价都大大超过了发展中国家人民的承受力。举例来说,一个典型的操作系统软件至少标价$100。在一个年人均收入只有$200-$300的国家,这$100是个巨额数字。
Linux和其它开源软件的崛起彻底改变了这一切。在适当的缩减之后,Linux可以在硬件配置极低的计算机上运行。这使得Linux成为穷人的理想选择。在发达国家已经成为历史的老旧机器,比如486/Pentium 1计算机,在发展中国家还在被使用着。Linux使得这些老旧机器继续发挥作用。由于在穷国,高昂的软件价格是个大问题,所以开源软件得到了广泛的传播。在亚非拉,Linux成了广大计算机爱好者们的选择。在世界的各个角落,Linux被本地化。这标志着它真正走向了全球。Linux的相关文件被翻译成了各种语言,包括很多冷门的语言,比如,越南语。
从桌面系统到超级计算机
Linus Torvalds当初开发Linux,只是出于一个黑客的爱好。自从Linux运行在了一个破386机器以后,到现在,它已经走过了一条很长的路。今天,它最令人瞩目的应用领域是大规模并行计算集群。
- National Center for Supercomputing Applications at the University of Illinois(NCSA)
- San Diego Supercomputer Center (SDSC) at the University of California
- Argonne National Laboratory in Chicago
- California Institute of Technology in Pasadena
在每个计算中心都有一个Linux超级计算机集群。在Teragrid网中,总共将会有超过3000个处理器进行并行运算。
道路在延伸
Linux从一个黑客的个人项目发展到一个遍布全球的操作系统,这一历程就象一次生物的进化。八十年代早期,Richard Stallman发起了GNU项目,为开源软件的发展奠定了基础。Andrew Tanenbaum教授开发的MINIX系统,把操作系统的学习研究从单纯的理论教学带入了实践阶段。最终,Linus Torvalds用他追求完美的无尽热情催生了Linux。在过去的几年中,开源社区成千上万的人们不断地呵护滋养着它,谱写了计算机革命史册的光辉一页。今天,Linux不再是一个学生黑客的项目,它成了一个世界范围的奇迹。在开源运动的精神感召下,IBM这样的大公司和千百万热情的人们都加入了进来。在计算科学的历史上,它将是人类最辉煌的成就之一。
穿黑色燕尾服的小家伙:Linux吉祥物
Linux的标志是一只小企鹅。不象其它商业操作系统,Linux没有采用一个令人肃然起敬的徽标。这个穿着黑色燕尾服的小家伙充分表达了自由软件运动无忧、无虑、无畏的态度。这个可爱的徽标诞生于一个有趣的小故事。据Linus说,Linux最初并没有徽标。一次,Linus去南半球某地度假,碰到了一只企鹅。它长得并不象现在的Linux徽标。Linus想去亲近这小家伙。结果,小企鹅在他手掌上重重地拍了一翅膀。这次有趣的经历导致了后来Linux徽标的诞生。
趣事
下面是一些Linus的名言。
Dijkstra八成讨厌我
(Linus Torvalds, in kernel/sched.c)
“我怎么知道它转不转?这是beta测试该做的事情。我只管编码。”
(Linus Torvalds的个性写照。摘自某个帖子)
“我真白痴...至少这个bug花了我五分钟才找到...”
(Linus Torvalds 给一个bug报告的回应)
“如果你想周游世界,想被邀请去到处演讲,那就写个Unix操作系统吧。”
(By Linus Torvalds)
>> Linux除了有一个酷名字以外,谁能说说为什么我该用Linux而不是BSD?
> 不,这就够了,有个酷名字就够了。在取名方面,我们花了老大的力气,希望它的名字能引起大家的兴趣。这招挺有效,数以千计的人们选择了Linux,就是为了说:“OS/2?哈。我有Linux。多酷的名字。”386BSD的名字里有太多数目字和奇怪的缩写,太失败了。听起来太技术化,把人都吓跑了。
(摘自Linus Torvald的一个关于Linux的跟贴)
> 有朝一日,大家觉得有人能把Linux搞得更好的时候(自由软件基金会就是个选择),我就“退位”。我觉得这还不是我们现在该操心的事情,至少在可见的将来还不会发生。我喜欢搞Linux,尽管工作量不小。而且我还没听到有人报怨我(也就听到些很小声的提醒,都是关于我忘了或者忽略了某个小补丁。至今也没有什么真正的负面反映)。
> 别误会,我上面这些话并不是说一旦有人报怨我,我就撂挑子不干了。我皮很厚(Lasu正在我背后偷看我写这些东西,他说“更确切地说该是‘脸皮’很厚”),厚得足以接受些难听的话。如果不是这样,早在听到ast(译注:Andrew S. Tanenbaum)嘲笑我模仿、复制minix的时候,我就停止开发了。我只是想说, Linux到现在一直是我的宝贝儿,如果有人想把它搞得更好,我不会死抱不放、舍不得撒手的。
Linus
> 嘿,也许我该到教皇那儿申请个圣徒的头衔。谁知道教皇的email?很高兴我让你恶心了。
(摘自Linus给某位为Linux未来表示担忧的人的回复)
当你向人炫耀“我写了个能搞死Windows的程序”的时候,大家会木然地盯着你说“呵,我Linux系统里有得是这类程序,而且这系统不花钱”。
(By Linus Torvalds)
年谱
日期 | 事件 |
1984年1月 | Richard Stallman从MIT辞职,开始了他的GNU项目。 |
1985年某月 | Richard Stallman成立了自由软件基金会。 |
1985年3月 | Richard Stallman在Dr. Dobb‘s杂志上发表了《GNU宣言》。在宣言中,他陈述了自由软件运动的起因。 |
1991年8月25号 | Linus在Usenet新闻组上公开了关于Linux的构想。 |
1991年9月 | Linux 0.01版在网上发布。 |
1992年1月 | 第一个Linux新闻组诞生:alt.os.linux。 |
1992年4月 | Ari Lemmke在Usenet上创立了广受欢迎的comp.os.linux新闻组。 |
1992年11月 | Adam Richter宣布他的公司推出了第一个Linux发行版: Yggdrasil。 |
1993年6月 | Peter Volkerding推出了著名的Linux发行版:Slackware。 |
1993年8月 | Matt Walsh推出《Linux安装与入门:第一版》。 |
1994年3月 | Linux内核1.0版问世。 |