LWN:Linux早期岁月!

关注了就能看到更多这么棒的文章哦~

The early days of Linux

April 12, 2023
This article was contributed by Lars Wirzenius
DeepL assisted translation
https://lwn.net/Articles/928581/

我的名字是 Lars Wirzenius,Linux 最开始的时候我就参与其中。Linux 如今在全球范围内都很成功,但它的开始阶段却相当磕磕绊绊的(humble)。本文是我对 Linux 最早的记忆,包括它的创建,以及它怎么开始走向今天的道路。

1988 年秋天,我开始在赫尔辛基大学读计算机科学,并认识了 Linus Torvalds,他是那年计算机科学专业中除外之外的另一位讲瑞典语的新生。在第一年结束时,我们得到了一台 Unix 服务器的访问权,我无意中发现了 Usenet 这个讨论系统(discussion system),因为我把 rm 错打成 rn (Usenet reader)。我把这件事告诉了 Linus,我们花了非常多的时间来深入探索。

第一年之后,我们都去服义务兵役了,虽然是在不同的地方。1990 年秋天,我们又回到大学学习,都参加了 C 和 Unix 编程的课程,其中也包括相当多的 Unix 内核架构的理论学习。于是我们就阅读了其他操作系统的内核,如 QNX 和 Plan 9。Linus 和我满怀热情地讨论了如何正确构建一个操作系统。我们有 20 岁的大学二年级学生所拥有的那种极端自信。放心,那时的事情都会被人们遗忘的,毕竟没有被记录下来供后人参考。

1991 年 1 月,Linus 从当地一家用零件组装电脑的商店买了他的第一台电脑。这台电脑有一个 386 的 CPU,这在当时是比较吸引人眼球的,主要原因是 Linus 想尝试多任务(multitasking)。此外,由于他之前使用的是 32 位摩托罗拉 68008 CPU 的 Sinclair QL 机器,因此他想要一个 32 位的 CPU,而不想降到 16 位,所以 286 就不是他的目标了。Linus 的第一台个人电脑有高达 4 兆字节的内存和一个硬盘驱动器。

他得到了一份《波斯王子》的游戏拷贝,这占据了他接下来几个月的大部分业余时间。后来他还买了一份 MINIX,因为在大学使用 Unix 后,他也想在家里使用类似的东西。

As and Bs

游戏通关后,Linus 开始学习英特尔汇编语言。有一天,他给我看了一个实现了多任务的程序。一个任务或线程(task or thread)会在屏幕上写一个字母 "A",另一个是 "B";当 "As "变成 "B "的时候,上下文切换就可以很直观地被看到。这就是后来被成长为 Linux 内核的第一个版本。

在这期间,大概 1991 年春末,我为他写了一个 C 语言 sprintf()函数的实现,因为他还没有学会如何写带有可变参数列表的函数。我想让他不必为每一种类型的 value 都要写出一个单独的函数而耗费时间。这段代码的核心部分仍然在内核中,称为了 Snprintf()。

随着时间的推移,Linus 刚刚起步的内核不断被他修改得更好,并不断实现新的东西。一段时间后,他有了键盘和串口的驱动,模拟了 VT100 终端的屏幕转义序列(terminal escape sequence),并且可以用它通过调制解调器(modem)拨号到大学,从家里阅读 Usenet。可以看科幻小说啦! 有一天,Linus 不小心错误地使用了他的硬盘当作 modem 来拨号到学校,结果他的主引导扇区就被写成了 "ATDT" 以及学校的调制解调器的电话号码了。从这个事故中恢复过来后,他在他的内核中实现了文件权限。

1991 年 8 月,Linus 在 comp.os.minix 新闻组中第一次公开提到他的新内核。其中包括 "我正在做一个(免费的)操作系统(只是一个业余爱好,不会像 gnu 那样大而专业)"(I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) )。真是太谦虚了。该系统最初被称为 Freax。几周后,Linus 让 ftp.funet.fi 的管理员之一 Ari Lemmke 上传了第一个 tar 文档。Ari 选择了 Linux 这个名字。最初的版本中仍然在某一个源文件中包含了那个原来的名字。

在这段时间里,人们对尝试这个新事物很感兴趣,所以 Linus 需要提供一个安装方法和说明。由于他只有一台电脑,所以他来拜访我,要在我的电脑上安装一下。由于他的电脑是用来开发 Linux 的,而 Linux 只是在他的 Minix 安装基础上发展起来的,所以以前从未真正经历过安装步骤。因此,我的电脑是第一台安装过 Linux 的电脑。当这一切发生时,我正在打瞌睡,我很推荐这种安装 Linux 的方式:自己去打瞌睡,而让 Linus 做那些艰苦的工作。

Linux 的第一个版本使用的是禁止商业使用的许可证。一些早期的贡献者建议改成自由软件许可证。1991 年秋天,Richard Stallman 访问了芬兰,我带 Linus 去听 Stallman 的演讲。这一点,以及来自贡献者的压力还有我的唠叨,最终说服了 Linus 在 1992 年初选择 GNU GPL 许可证。

在圣诞节期间,Linus 在 Linux 中实现了虚拟内存。这使得 Linux 在内存不足的廉价机器上成为了具备可用性的操作系统。

1992

1992 年以与 Andrew Tanenbaum 的著名辩论开始了,他是一位大学教授,MINIX 的作者。他对 Linux 及其架构有一些看法。Linus 对 MINIX 也有看法。这场辩论被描述为一场热火朝天的战争(flame war),但事后看来其实是相当文明的。

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

我选择了在社区方面做出贡献,而不是直接对内核做出贡献,也包括帮助回答问题,编写文档,等等。我还办了一份关于 Linux 的短暂的 newsletter,最知名的是发表了对 Linus 的第一次采访。这个 newsletter 现在实际上被 comp.os.linux.announce 新闻组取代了。

第一个 Linux 发行版也开始于 1992 年:Softlanding Linux System, 简称 SLS。第二年,SLS 演变成 Slackware,这激发了 Ian Murdock 在 1993 年创办 Debian,以探索一个更加基于社区的开发方式。在接下来的几年里,其他一些发行版也相继问世。

1993 年,Linus 和我都被聘为大学的助教。我们共用一间办公室。那间屋子里有一台 PC,Linus 接管了它,并用于 Linux 开发。我对使用一台 DEC 终端来访问 Usenet 感到很满意了。

有一天,Linus 感到很无聊,工作上使用的电脑感觉运行很慢。于是他花了一天时间用汇编语言重写了 Linux 内核的命令行分析器(command-line parser),以提高速度。(当然,这个做法是毫无意义的,解析器后来又用 C 语言重写了一遍,以利于移植。它的执行速度并不重要)。几年后,他花了好几天时间玩 Quake 游戏,用的名头是为了测试内核内存管理的压力测试,其实那已经是在一台较新的 PC 上了。在那个房间里有很多乐趣,而且没有任何恶作剧(prank)。根本就没有。

后来,Linux 获得了对以太网和 TCP/IP 的支持。这意味着人们无需使用调制解调器就可以阅读 Usenet。唉,早期的 Linux 网络代码偶尔会有点毛病,因为它是从头开始写的。有一次,Linux 会发送一些出了问题的数据包 packet,导致网络上所有的 Sun 机器瘫痪。由于很难修复 Sun 的内核,Linux 被禁止访问大学网络,直到其错误被 fix 为止。不能从自己的办公桌上访问 Usenet,这很好地逼迫着他快速完成了 fix。

1.0

在 1994 年的春天,我们觉得 Linux 已经开发完毕了。真的完毕了。没有什么可以添加的内容了。人们可以用 Linux 来编译 Linux,阅读 Usenet,并同时运行许多个 xeyes 程序。我们决定发布 1.0 版本,并安排了一个发布活动。芬兰的计算机媒体被邀请了,一家电视台甚至派出了一个摄制组。活动的大部分内容是在后台庆祝性地编译 Linux 1.0,而 Linus 和其他人则讲述了什么是 Linux 以及它有什么好处。Linus 解释说,用于个人电脑的商业 Unix 是如此昂贵,以至于自己编写更容易。

1995 年,Linus 和我在大学里上了一门软件工程课程,其中大部分都是一个大型实践项目。当然,这是建立在 Linux 之上的。我坚持要使用一个版本控制系统。我在以前的课程中看到学生们做的是大喊大叫方式来进行版本控制:学生们通过 NFS 共享一个源代码 tree,当他们改变什么的时候,就大喊 "我正在编辑这个文件"。这在我看来并不是一个有效的方法,所以我坚持使用 CVS,那是我当时刚刚了解到的工具。当时的体验导致了 Linus 后来不喜欢 CVS,并且多年来拒绝使用任何版本控制工具,唯一使用的方式就是把 tar 包上传到 FTP 网站。

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

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

在接下来的几年里,发生了很多事情。事实证明,Linux 仍然有一些缺失的功能,所以人们在这些方面努力开发。创造出来了新的术语 "开放源代码(open source) "被创造出来,IBM 在 Linux 开发中投入了大量的资金。网景(Netscape)公司将这个网络浏览器的一个版本作为开放源代码发布出来。跳过一些细节以及许多岁月之后,open source 基本上占领了世界。LWN 出现了,开始逐周报道了这段历史中的大部分。

1991 年,Linus 写道,Linux "不会像 gnu 那样大而专业"。在 2023 年。Linux 正在每个大陆、每个大洋、数十亿台设备上、在轨道上和火星上运行。对于一开始只是两个线程,在屏幕上写一串串的 A 和 B 的程序来说,有这个结果还挺不错的。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

format,png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值