Linux的早期岁月

Summary

The journey of Linux began in 1991 when Linus Torvalds, driven by an interest in multitasking, acquired a 386 PC and developed a rudimentary kernel demonstrating 'A' and 'B' threads. This initial program quickly expanded to include essential drivers, terminal emulation, and networking capabilities. After its public announcement as "Freax" and subsequent renaming to Linux, the project adopted the GNU GPL and integrated virtual memory, significantly enhancing its practicality. This rapid development fostered a vibrant community, leading to the emergence of early distributions and the landmark 1.0 release in 1994, paving the way for its eventual global ubiquity.

我的名字是 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

  COMMENTS

0

No comment for this article.