【CSDN 编者按】所有开发者应该都了解过Linux系统,它也是自由软件和开放源代码软件发展中的成功典范。在漫长的发展史中,Linux的背后却藏着许多有意思的小故事,本文作者Lars Wirzenius是Linux之父Linus作为之前的同事,一同见证Linux的创立,让我们跟随Lars Wirzenius的视角,来了解Linux创立和早期发展的全过程。
作者 | Lars Wirzenius
译者|陈静琳 责编 | 屠敏
(资料图片)
出品 | CSDN(ID:CSDNnews)
我的名字叫Lars Wirzenius,我见证了Linux最初的创立。现在,Linux在全球范围内取得了成功,但它的起点却相当卑微。以下是我对Linux最早的记忆,它的创建,以及它走向今天的道路的开始。
1988年秋天,我开始在芬兰赫尔辛基大学学习计算机科学,并认识了Linus Torvalds(Linux内核的最早作者),他是那年计算机科学专业另一个讲瑞典语的新学生。在大学第一年结束时,我们得到了一台Unix服务器的访问权,我无意中发现了Usenet(1979年杜克大学的研究生汤姆·特拉斯科特与吉姆·埃利斯设计),即分布式的互联网交流系统,因为我把rm错打成rn,就变成了Usenet阅读器。我把这件事告诉了Linus,我们花了许多的时间来探索这个问题,就有了后续的故事。
Linux开始于一台组装电脑
第一年之后,我们都去服义务兵役了,虽然在不同的地方。1990年秋天,我们回到大学学习,都参加了C和Unix编程的课程,其中也包括相当多的Unix内核架构的理论。这导致我们也去了解了其他操作系统的内核,如QNX和Plan 9,我们满怀热情地讨论了如何正确构建一个操作系统,当时我们拥有着20岁大学生的一腔热血,对未来有着美好的憧憬。
1991年1月,Linus从当地一家用零件组装电脑的商店买了他的第一台电脑。这台电脑有一个386的CPU,这在当时是比较花哨的,因为Linus想探索多任务。此外,因为这台电脑是用零件组装的,它还来自32位摩托罗拉68008CPU的辛克莱QL(Sinclair Research于1984 年推出的个人电脑),他想要一个32位的CPU,而不想降到16位,所以286不是一个好的选择。Linus的第一台个人电脑有高达4兆字节的内存和一个硬盘驱动器,已经是当时非常先进的机器。
Linus得到了一份《波斯王子》的游戏拷贝,把将大部分时间用来玩游戏。后来他还买了一份MINIX(是一个迷你版本的类Unix操作系统),因为在大学使用Unix后,他也想在家里使用类似的东西。
第一个版本:As和Bs
完成游戏后,Linus开始学习英特尔汇编语言。有一天,他给我看了一个做多任务的程序。一个任务或线程会在屏幕上写一个字母 "A",另一个是 "B";当 "As "变成 "B "的时候,上下文的切换在视觉上是很明显的。这就是后来被称为Linux内核的第一个版本。
在这期间,即1991年春末,我为他写了一个C语言sprintf()函数的实现,因为他还没有学会如何写带有变量参数列表的函数。我想让他不必为每一种类型的值都要写出不同的函数而感到痛苦,对于更安全的Snprintf()函数,代码的核心仍然在内核中。
随着时间的推移,Linus不断实现新的东西,使他刚刚起步的内核变得更好。一段时间后,他有了键盘和串口的驱动程序,模拟了VT100终端的屏幕转义序列,并且可以用它通过调制解调器拨号到大学,从家里阅读Usenet。简直像一本科幻小说! 有一天,Linus意外地试图用他的硬盘拨号到大学,导致他的主引导扇区以“ATDT”和大学调制解调器池电话号码开头,从中恢复过来后,他在他的内核中实现了文件权限。
在这段时间里,人们对这个新事物很感兴趣,所以Linus需要提供一个安装方法和说明。由于他只有一台电脑,所以他来拜访我,要在我的电脑上安装。并且因为他的电脑是用来开发Linux的,而Linux只是在他的Minix安装基础上发展起来的,所以以前从未真正安装过。因此,我的电脑是第一台安装Linux的电脑!当这一切发生时,我正在打盹,我推荐这种安装Linux的方法:打盹,而Linus去做这些艰苦的工作。
Linux的第一个版本使用的是禁止商业使用的许可,然而一些早期的贡献者建议将其改为自由软件许可证。1991年秋天,Richard Stallman(GNU项目发起人)访问芬兰,我带Linus去听Stallman的演讲。因为来自贡献者的压力,以及我的唠叨,最终说服了Linus在1992年初选择GNU GPL(General Public License)许可证。
在圣诞节期间,Linus在Linux中实现了虚拟内存。这使得Linux在内存不足的廉价机器上成为更实用的操作系统。
重要的一年
1992年以与Andrew Tanenbaum的著名辩论开始,他是一位大学教授和MINIX的作者,因为他对Linux和它的结构有一些看法,同时Linus对MINIX也有看法,所以他们有了一场被描述为火焰战争的辩论,但事后看来其实是相当文明的。
其实对于Linux未来的成功而言,更重要的是X11系统被移植到了Linux上,使1992年成为Linux桌面快捷方式重要的一年。
第一个Linux发行版也开始于1992年:SLS(Softlanding Linux System)。第二年,SLS演变成Slackware(Patrick Volkerding制作的Linux发行版本),这激发了Ian Murdock在1993年创办Debian,以探索一个更加基于社区的开发结构。在接下来的几年里,还有一些其他的发行版也随之而来。
1993年,Linus和我都被聘为大学的助教,我们共用一间办公室。那个房间有一台PC,Linus接管了它,并用于Linux的开发。彼时,我对一台DEC终端用于访问Usene(讨论系统)感到非常满意。
有一天,Linus感到很无聊,因为工作中的电脑感觉很慢,所以他花了一天时间用汇编语言重写了Linux内核的命令行分析器,以提高速度。(当然,那其实是毫无意义的,解析器后来又用C语言重写了一遍,以利于移植,所以它的速度并不重要)。几年后,他拿到了一台较新的PC,表面说是为了测试内核内存管理的压力,其实是花了好几天时间玩Quake游戏,有很多乐趣被停留在那个房间里。
后来,Linux获得了对Ethernet(以太网)和TCP/IP(Transmission Control Protocol/Internet Protocol)的支持,这意味着人们无需使用调制解调器就可以阅读Usenet。可惜的是,早期的Linux网络代码偶尔会有些粗糙,因为它是从头开始写的。有一次,Linux发送了一些破损的数据包,导致网络上所有的Sun机器瘫痪。由于很难修复Sun的内核,Linux被禁止进入大学网络,不能从自己的办公桌上便捷访问Usenet很好的激励了修复进程,直到它的错误被修复完成。
“开源“被真正创造出来
在1994年春天,我们觉得Linux已经完成了,没有什么可补充的了。人们可以用Linux来编译自己,阅读Usenet,并同时运行许多xeyes程序的副本。彼时,我们决定发布1.0版本,并安排了一个发布活动。我们邀请了芬兰的计算机媒体,一家电视台甚至派出了一个摄制组,活动的大部分内容是在后台隆重地编译Linux 1.0,而Linus和其他人则讲述了什么是Linux以及它有什么好处。Linus解释说,用于个人电脑的商业Unix是如此昂贵,因此编写自己的Unix更容易。
1995年,Linus和我在大学里上了一门软件工程课程,其中大部分是一个大型的实践项目,不过建立在Linux的基础之上。我坚持要使用一个版本控制系统,因为我在以前的课程中看到学生们大喊大叫的版本控制:学生们通过NFS(Network File System)共享一个源代码树,当他们改变什么的时候,就大喊 "我正在编辑这个文件"。我认为这不是一个有效的方法,所以我坚持使用CVS(Concurrent Versions System),这是我刚刚了解到Linus不喜欢CVS的经历,并且多年来拒绝使用任何版本控制,除了将tar球(使用gzip压缩程序压缩的文件)上传到FTP网站(File Transfer Protocol)。
那一年Linus首次把Linux移植到新的架构上,他得到了一台DEC Alpha机器(64位指令架构微处理器)。我后来会把这台机器用作阅读Usenet的终端,其他人将Linux移植到其他架构上,但这并没有让我得到更多的机器来阅读Usenet。
1997年,Linus毕业并搬到了美国,在Transmeta公司(一家设计超长指令字代码转译微处理器的美国有限公司)工作,而我在芬兰赫尔辛基地区的另一所大学找到了一份工作。
在接下来的几年里,发生了很多事情。事实证明,Linux仍然有一些缺失的功能,所以人们在这些方面进行努力。术语 "open source(开放源代码)"被创造出来,IBM(International Business Machines Corporation),是美国一家跨国科技公司及咨询公司,在Linux开发中投入了大量的资金。彼时,网景公司发布了一个开源版本的网络浏览器,又随着时间的推移,开放源码基本上占领了世界。LWN(Eklektix公司旗下的计算网络杂志,着重于针对Linux和其他类Unix操作系统的自由软件和软件)开始逐周报道了这段历史的大部分内容。
1991年,Linus写道,Linux "不会像GNU那样大而专业"。在2023年。Linux正在每个大陆、每个海洋、数十亿台设备上、在轨道上和火星上运行。而对于一开始只是两个简单的线程,在屏幕上写As和Bs的流来说,这还不错。
关键词: