Linux的早期岁月

  sonic0002        2023-05-18 07:23:18       1,636        0    

我的名字是 Lars Wirzenius,我曾经见证了Linux的起点。Linux现在是一个全球成功的操作系统,但它的开始却非常谦逊。这些是我对Linux最早的日子、它的创造以及它走向今天的记忆。

我于1988年秋季开始在赫尔辛基大学攻读计算机科学,并认识了 Linus Torvalds,他也是当年计算机科学专业的新生之一,而且和我一样说瑞典语。在那个学年的末尾,我们得到了一台Unix服务器的访问权限,然后我无意中发现了Usenet,这个讨论系统,因为我误将rm打成了rn,即Usenet阅读器。我告诉了Linus,然后我们花了太多时间去探索它。

第一年结束后,我们都去做了必要的兵役服务,尽管在不同的地方。我们于1990年秋季回到了大学学习,同时都选修了C和Unix编程课程,其中包括Unix内核架构的相当多的理论知识。这促使我们阅读其他操作系统内核的文献,例如QNX和Plan 9。Linus和我热情地讨论了如何正确地构建一个操作系统。我们拥有20岁大学二年级学生的所有自信。每个人都会因为这没有被永久记录而受益。

1991年1月,Linus从一家组装电脑的当地商店购买了他的第一台PC。这台PC有一颗386 CPU,在当时相对比较豪华,因为Linus想探索多任务处理。此外,由于他从带有32位Motorola 68008 CPU的Sinclair QL过来,他想要一颗32位CPU,而不想退回到16位CPU,所以286不是一个选择。Linus的第一台PC有4兆字节的内存和一个硬盘。

他买了一份《波斯王子》游戏,接下来的几个月里,它占据了他的大部分空闲时间。后来,他还购买了一份MINIX,因为在大学使用Unix之后,他也想在家里使用类似的系统。

A和B

在完成游戏后,Linus开始学习英特尔汇编语言。有一天,他向我展示了一个实现多任务处理的程序。一个任务或线程会在屏幕上写入一串字母"A",另一个会写"B";当字母"A"的流变成字母"B"时,上下文切换就变得明显了。这是后来被称为Linux内核的第一个版本。

随着时间的推移,Linus不断完善他的初创内核并实现新功能。不久之后,他的内核具备了键盘和串口驱动程序、屏幕的VT100终端转义序列模拟,并能够通过调制解调器拨打大学的电话线,从家中阅读Usenet。简直是科幻!有一天,Linus意外地试图使用他的硬盘拨打大学电话线,导致他的主引导扇区以“ATDT”和大学调制解调器池的电话号码开头。在从这个问题中恢复后,他在内核中实现了文件权限。

1991年8月,Linus第一次在comp.os.minix新闻组中公开提到他的新内核。其中包括这句话:“我正在制作一个(免费的)操作系统(只是一项爱好,不会像gnu那样变得庞大和专业)”。多么谦虚啊。这个系统最初被称为Freax。几周后,Linus请求ftp.funet.fi的管理员之一 Ari Lemmke上传第一个tar档案。Ari选择了名字Linux。最初的版本仍然在一个源文件中嵌入了原始名称。

在此期间,人们对这个新东西很感兴趣,所以Linus需要提供安装方法和说明。由于他只有一台PC,他来我这里安装。由于他的计算机被用来开发Linux,简单地在他的Minix安装之上增加的,它从未实际安装过。因此,我的电脑是第一台安装Linux的PC。当这一切发生的时候,我在打盹,我建议使用这种安装Linux的方法:打盹,让Linus做艰苦的工作。

Linux的最初几个版本使用禁止商业使用的许可证。一些早期的贡献者建议改为自由软件许可证。在1991年秋季,理查德·斯托曼访问芬兰,我带Linus去听了斯托曼的演讲。这,加上贡献者的压力和我的催促,最终说服Linus在1992年初选择了GNU GPL许可证。

在圣诞节假期期间,Linus在Linux中实现了虚拟内存。这使得Linux在内存较少的廉价机器上成为一个更加实用的操作系统。

1992年

1992年伊始,发生了与Andrew Tanenbaum的著名辩论。他是一位大学教授,也是MINIX的作者。他对Linux及其架构有一些看法,而Linus则对MINIX有一些看法。这场辩论曾被描述为一场火药味十足的战争,但回想起来,实际上相当文明。

对于Linux未来的成功更为重要的是,X11系统被移植到了Linux上,使得1992年成为了Linux桌面的元年。

我选择在社区方面做出贡献,而非直接为内核编写代码,并帮助回答问题、撰写文档等等。我还运营了一份关于Linux的短暂通讯,其中最有趣的内容是发布了Linus的第一次采访。这份通讯实际上被comp.os.linux.announce新闻组所取代。

1992年也开始了第一个Linux发行版:Softlanding Linux System或SLS。在接下来的一年里,SLS发展成为Slackware,这启发了Ian Murdock在1993年创立Debian,以探索更具社区性的开发结构。在接下来的几年里,还会出现一些其他的发行版。

1993年,我和Linus都被聘为大学的助教,我们共用一个办公室。那个房间有一台PC,Linus接手了它,用于Linux的开发。我很满意用一台DEC终端访问Usenet。

有一天,Linus觉得无聊,工作中的PC感觉很慢。他花了一天时间用汇编语言重写了Linux内核的命令行解析器,以提高速度。(当然,那是毫无意义的,解析器后来会再次用C重写,以提高可移植性。速度并不重要。)几年后,他花了几天时间玩Quake,表面上是为了压力测试内核内存管理,但那是在一台更新的PC上。在那个房间里,我们玩得很开心,没有恶作剧,一点也没有。

在某个时候,Linux获得了以太网和TCP/IP的支持。这意味着可以在不使用调制解调器的情况下访问Usenet。不幸的是,早期的Linux网络代码有时会有一些小问题,因为它是从头开始编写的。有一次,Linux发送了一些破损的数据包,导致网络上所有的Sun机器都崩溃了。由于很难修复Sun内核,Linux被禁止进入大学网络,直到其bug被修复。不能在桌子上访问Usenet是一个很好的动力来源。

1.0

1994年春季,我们感觉Linux已经完成了。没有什么可以再添加的了。可以使用Linux来编译自身,阅读Usenet,并同时运行许多xeyes程序的副本。我们决定发布1.0版本,并安排了一个发布活动。邀请了芬兰的计算机媒体,甚至还有一支电视台的摄制组。活动的大部分内容都是在庆典性地在后台编译Linux 1.0,而Linus和其他人则讲述了Linux是什么以及它的用途。Linus解释说,商业Unix在PC上太昂贵了,写自己的操作系统更容易。

1995年,Linus和我在大学里学习软件工程课程,主要是一个大型实践项目。当然,这是基于Linux的。我坚持使用版本控制系统。我曾经目睹早期课程的学生们大喊大叫地进行版本控制:学生们通过NFS共享源代码树,在更改某些内容时大喊“我正在编辑这个文件”。这对我来说似乎不是一种有效的方法,所以我坚持使用我刚学到的CVS。这个经历是为什么Linus不喜欢CVS并多年拒绝使用除上传tar包到FTP站点之外的任何版本控制的原因。

那一年也是Linus第一次将Linux移植到新架构的年份。他得到了一台DEC Alpha机器。后来,我得到了这台机器,用作阅读Usenet的终端。其他人将Linux移植到其他架构,但这并没有导致我获得更多的机器来阅读Usenet。

1997年,Linus毕业并搬到美国,在Transmeta公司担任工作。而我则在赫尔辛基地区的另一所大学工作。

接下来的几年,发生了许多事情。Linux仍然缺少一些功能,因此人们致力于开发这些功能。术语“开源”被创造出来,IBM投资了大量资金用于Linux的开发。Netscape发布了其Web浏览器的开源版本。跳过一些细节和许多年,开源基本上占据了整个世界。LWN开始并以每周为单位报道了这段历史。

1991年,Linus写道Linux“不会像GNU那样大而专业”。在2023年,Linux在每个大洲、每个海洋、数十亿设备、轨道和火星上运行。这对于最初只有两个线程,在屏幕上编写一些A和B字符的程序来说,已经算不错了。

翻译自The early days of Linux [LWN.net]

LINUX  HISTORY  STORY 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

System crash at high load