@ 2015.08.27 , 17:30

忘了Win95诞生20周年吧,Linux24岁了

[-]

24年前的1991年8月24日,计算史上最著名的消息之一被张贴出来:

还在用minix的大家好 –

我在做一个跑在386(486)AT兼容机上的(免费)操作系统(只是个爱好,不会像gnu那么大而专业)。从4月份就在搞了,现在差不多可以用了。

很多人都在Usenet的comp.os.minix新闻组里读过这则消息,或者至少听说过它,而知道这个(免费)操作系统最终接管了计算机世界里的广阔领域,并且变得又“大”又“专业”的人则更多。但它成名之前的岁月是怎样的?是哪些关键事件导致Linus创建Linux的第一个公开发布版本?

为了找到答案,1996年我去了他在芬兰赫尔辛基的公寓。在《连线》杂志1997年8月的特写中我使用了一些他的回答;更多的则出现在我2011年出版的书《反叛军代码:Linux和开放源码革命内幕》,下面是Linus自己讲述的Linux如何诞生的更详尽解释。

1988年秋季,Linus进入赫尔辛基大学学习计算机科学。仅仅两年后他第一次接触了Unix:

有一门很短的Unix课。那是在1990年秋,大学有一台跑Ultrix的MicroVAX,有16个用户许可证什么的。过去他们全都是用VMS,所以这门Unix小课最多只能16个人上,因为硬件就只有这么多了。而且你还得排队等终端用,但即便如此,我还是立即就喜欢上Unix,我想这是因为它的编程接口。Unix号称复杂但实则很简单。

Linus使用的教材之一是Andrew Tanenbaum的《操作系统:设计与实现》,Tanenbaum的书中不但有怎样写一个操作系统的详实信息,还附带了一个名为Minix的小型学习操作系统的源代码。它最初写在英特尔8088处理器上,后来移植到英特尔80386上。

[-]

Linus一直是一名芯片鉴赏家,他虽然憎恶英特尔的早期产品,却把80386评价为“比以前的任何芯片好很多”。在一块还算可以的芯片上有类似Unix的Minix可用,其结果是决定性的:“就在那时我定下决心买了台PC。”直到那时,他都一直在一台Sinclair QL(“量子跃迁”)上编程,再之前是一台Commodore Vic-20。

Linus能买下他的第一台PC要归功于硬件价格下跌和个人状况的欢乐组合。因为芬兰大学教育系统的资助方式,他能够得到学生贷款,由于他在家和母上同住,他不需要把很多贷款花在住上,就可以拿作他用。当时还正逢圣诞,“我有压岁钱之类的。我记得放完年假的第一天,我就跑去买了台PC。”那是1991年1月5日。即使到1996年,Linus还清楚记得他第一台PC的配置:

英特尔386,DX33,4MB内存,没有协处理器——我自己可以用模拟软件,但是别人有协处理器,我不确定Linux能不能在上面工作,所以事实上半年后我不得不去买了一个浮点协处理器。硬盘有40MB,所以不是很大。

即使Linus一攒够钱就冲出去买了他的PC,因为Minux软盘还要几个月才能送到,他无法立即投身进Unix的世界。因此他像任何一个真正的程序员一样打发时间——在MS-DOS下玩“波斯王子”等游戏。他也在探索英特尔80386芯片的架构。Linus这样描述他的早期实验:

我在测试任务切换能力,因此我所做的是跑了两个进程,让它们都向屏幕上写东西,再用一个定时器来切换任务。一个进程写出A,另一个写出B,所以我就看到AAAA BBBB等。开头两个月我写出来的代码量只有一□□,因为有非常多的细节,全新的CPU,我之前从来没在英特尔上编过程。

[-]

异乎寻常地,这个非常简单的任务切换程序结果成长进入了Linux内核:

在某个时候我duang一下注意到,我几乎已经有了内核功能,因为我做的那两个原始进程是写出A和B,我把这两个进程改为终端仿真程序包的功能。你就有一个进程读取键盘,并发往调制解调器,另一个则从调制解调器读取并送往屏幕。我有键盘驱动程序,因为显然我需要某种方式来和我写的这货通讯,然后我有文本模式的VGA驱动,我也写了串行线的驱动,这样我就能打电话到大学去阅读新闻。这真的就是我最初在做的,只是通过调制解调器读点新闻。

Linus能够使用他简单的原始内核阅读新闻组的一个好处就是他可以得到技术问题的答案来帮助他改进系统:

那是91年夏天,我真正利用了新闻组来问有关POSIX标准信息之类东西。我在看新闻、使这个模拟程序包变得更好。然后我想要下载东西,因此我得写一个硬盘驱动,我得写一个文件系统,这样我就能读取Minix文件系统,以便写文件和读出文件来上传它们。所以基本上,当你有了任务切换,你有了文件系统,你有了设备驱动——那就是Unix。

Linux在那个时刻也许就已经存在了,但Linus还没有这么叫它。它的得名出自于Linus要求得到POSIX规范信息以确保Unix类操作系统间兼容性,赫尔辛基大学教员之一Ari Lemmke告诉Linus,POSIX并不是网上能免费得到的,必须要付费——对于穷学生来说这几乎不可行。但Linus回顾道:

[-]

告诉我该标准不可用的同一个人也告诉我他的兴趣领域在于内核和操作系统,他在ftp.funet.fi的FTP服务器上有一小块地盘,他跟我说:“呵呵,我帮你开了个目录。”于是他创建了/pub/os/linux这个目录。

Linux是我的开发代号,所以在这个意义上他并没有真正给它起名,但是我从未想要以Linux的名字发布它。Linux作为开发代号完全很好,但如果我真的用它作为正式名称人们会认我狂妄自大,不会把我当真。所以我选择了这个非常糟糕的名字“Freax”,意为“免费Unix”。幸运的是,Ari Lemmke反而使用了这个开发代号。之后,他再也没改过名。

除了给Linux选了个好名字,Lemmke也启动了整个公共开发进程:

我从未宣布过第一个版本的Linux;我只是给新闻组里表示感兴趣的几个人发了个人邮件。几星期后的第二个版本要好很多;我就宣布了这个版本。第一个版本非常匆忙,部分是因为已经有了FTP站点——已经在那里有一个月左右了——因为我有这个站,我觉得我就得有点东西可用,我必须上传一些东西上去。因此第二版才更接近我真正想要的,那一个就是我在Minix新闻组里宣布的那个。

在1996年,Linus说道:“我不知道多少人在comp.os.minix拿到了第一个公开版本——也许10个20个的样子。”幸运的是,这显然足够多,以致于启动了一系列事件,最终导致今天有多得多数量的人在使用着24年前那个卑微的任务切换器的直系后裔。

[-]

本文译自 ArsTechnica,由 王丢兜 编辑发布。

赞一个 (18)