OSCHINA
我叫 Lars Wirzenius,见证了 Linux 的起步。Linux 如今在全球取得了巨大成功,但它诞生之初却非常不起眼。
以下是我对 Linux 最早期的记忆,关于它如何被创建 —— 这也是 Linux 达成如今地位的起点。
我在 1988 年秋季开始了在赫尔辛基大学计算机科学专业的学习,那年我还遇到了 Linus Torvalds,他是那年计算机科学系另一位说瑞典语的新生。在那年的尾声,我们获得了访问 Unix 服务器的权限,我因为误将rm
输入为rn
(Usenet 阅读器的缩写)而意外发现了 Usenet 这个讨论系统。
我把这件事告诉了 Linus,然后我们花了很多时间来探索这个系统。
一年后,我们都去参加了义务兵役,但在不同的地方。我们在 1990 年秋天回到了大学继续学业,并都选择了 C 和 Unix 编程课程,这门课程还包括相当一部分 Unix 内核架构的理论。这促使我们阅读了其他操作系统的内核,比如 QNX 和 Plan 9。我和 Linus 热情地讨论了操作系统应该如何正确构建。我们有着 20 岁大二学生的那种过度自信,所幸这件事没有被记录下来流传后世。
1991 年 1 月,Linus 在当地一家组装电脑零件的商店购买了他的第一台个人电脑。这台电脑配备了一款 386 CPU,在当时算是相当高级的,因为 Linus 想探索多任务处理。
此外,由于他从一台配备 32 位 Motorola 68008 CPU 的辛克莱尔 QL电脑迁移过来,他想要一个 32 位的 CPU,不想降级到 16 位,因此 286 并不是一个选择。Linus 的第一台个人电脑拥有惊人的 4 兆字节 RAM 和一个硬盘。
他获得了一份《波斯王子》游戏的副本,这占据了接下来几个月他大部分的空闲时间。后来,他还购买了一份MINIX,因为在大学使用过 Unix 后,他想在家里也拥有类似的东西。
字母 A 和字母 B
完成游戏后,Linus 开始学习英特尔汇编语言。有一天,他向我展示了一个多任务处理的程序。一个任务或线程会在屏幕上写入字母 "A" 的流,另一个写入 "B";当 "A" 的流变为 "B" 的流时,上下文切换在视觉上非常明显。这就是后来被称为 Linux 内核的第一个版本。
后来,Linus 扩展了这个程序,并用 C 语言编写了大部分。在 1991 年晚春的这个时期,我为 Linus 编写了一个 C 语言的sprintf()函数的实现,因为他还没有学会如何编写带有可变参数列表的函数。我想让他免受为每种要写入的值编写不同函数的痛苦。这段代码的核心仍然在内核中,作为 snprintf ()。
随着时间的推移,Linus 不断改进他那初出茅庐的内核,并持续实现新功能。不久之后,他编写了键盘和串行端口的驱动程序,屏幕上实现了对VT100终端转义序列的模拟,并且可以使用它通过调制解调器从家中拨打电话到大学,以读取 Usenet。这简直就是科幻小说中的情节!
有一天,Linus 不小心尝试使用他的硬盘来拨打电话到大学,结果导致他的主引导扇区以"ATDT"和大学调制解调器电话号码开始。从这次事故中恢复过来后,他在内核中实现了文件权限功能。
1991 年 8 月,Linus 在 首次公开提及他的新内核 的地方,即在 comp.os.minix 新闻组中,提到了这句话:“我正在做一个(免费)操作系统(仅作为爱好,不会像 GNU 那样庞大和专业)”,如此谦逊。
该系统最初被称为 Freax。几周后,Linus 请求 ftp.funet.fi 管理员之一 Ari Lemmke 上传第一个 tar 存档。Ari 选择了 Linux 这个名字。最初的版本仍然在其中一个源文件中保留了原始名称。
在这段时间里,人们对尝试这个新事物很感兴趣,因此 Linus 需要提供一种安装方法和说明。由于他只有一台个人电脑,所以他来到我家安装。由于他的电脑一直被用来开发 Linux,而这只是在他 Minix 安装的基础上简单扩展的,所以它实际上从未真正安装过。
因此,我的电脑是 Linux 第一次安装的 PC。当这一切发生的时候,我正在睡觉,我推荐这种安装 Linux 的方法:睡觉,而 Linus 做艰苦的工作。
Linux 的第一个版本使用了一种禁止商业使用的许可证。一些早期的贡献者建议改为使用免费软件许可证。
1991 年秋天,RMS 访问了芬兰,我带 Linus 去听了 RMS 的演讲。这次演讲,贡献者的压力以及我的纠缠最终说服了 Linus 在 1992 年初选择 GNU GPL 许可证。
圣诞节假期期间,Linus 在 Linux 中实现了虚拟内存。这使得 Linux 成为在内存有限的廉价机器上更加实用的操作系统。
1992 年
1992 年伊始,发生了一场著名的与 Andrew Tanenbaum 的辩论,Andrew Tanenbaum 是一位大学教授,也是 MINIX 的作者。他对 Linux 及其架构持有一些看法。Linus 也对 MINIX 有自己的观点。这场辩论被描述为一场激烈的争吵,但从后来看,实际上相当文明。
对 Linux 未来成功更为重要的是,X11 系统被移植到了 Linux 上,使得 1992 年成为了 Linux 桌面的元年。
我选择在社区方面贡献力量,而不是直接参与内核开发,帮助回答问题、编写文档等。我还创办了一份关于 Linux 的简短新闻通讯,其中最有趣的是发表了第一次采访 Linus 的文章。这份新闻通讯后来被 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 内核的命令行解析器,为了提高速度。(当然,这完全是徒劳的,解析器后来又用 C 语言重新编写,以便于移植。其速度并不重要。)
几年后,他花了好几天的时间玩《Quake》,表面上是为了测试内核内存管理,尽管那时用的是一台更新的电脑。那个房间里玩得很开心,而且没有任何恶作剧。完全没有。
在某一点上,Linux 获得了对以太网和 TCP/IP 的支持。这意味着人们可以不用调制解调器就能阅读 Usenet。然而,早期的 Linux 网络代码有时有点粗糙,因为它们是从零开始编写的。
有一次,Linux 发送了一些损坏的包,导致网络上的所有 Sun 机器都崩溃了。由于修复 Sun 内核很困难,Linux 被禁止在大学网络中使用,直到其错误被修复。无法从自己的办公桌访问 Usenet 是一个极大的动力。
1.0
在 1994 年的春天,我们觉得 Linux 已经完成了,结束了,没有更多可以添加的了。人们可以用 Linux 来编译它自己,阅读 Usenet,同时运行许多个 xeyes 程序。
我们决定发布 1.0 版本,并安排了一场发布活动,邀请了芬兰的计算机媒体,甚至有一个电视台派出了摄制组。大部分活动都是仪式性地在后台编译 Linux 1.0,同时 Linus 和其他人谈论 Linux 是什么,以及它的优点。Linus 解释说,PC 上的商业 Unix 系统如此昂贵,以至于自己编写一个更简单。
在 1995 年,我和 Linus 在大学里上了一个软件工程课程,这个课程主要由一个大型实践项目组成。当然,这个项目是基于 Linux 构建的。我坚持要使用版本控制系统。我曾目睹在早期课程中的学生进行一种嘈杂的版本控制:学生们通过 NFS 共享源代码树,在修改文件时会大声喊 “我在编辑这个文件”。
在我看来,这并不是一个有效的办法,所以我坚持使用 CVS,这是我刚刚了解到的。但正是这次经历让 Linus 不喜欢 CVS,并且多年来拒绝使用任何超出上传 tar 包到 FTP 站点的版本控制工具。
那年也是 Linux 首次被 Linus 移植到新架构的时候。他得到了一台 DEC Alpha 机器。我后来用这台机器作为终端来阅读 Usenet。其他人也将 Linux 移植到其他架构,但这并没有让我得到更多机器来阅读 Usenet。
在 1997 年,Linus 毕业后搬到了美国,在 Transmeta 公司找到了一份工作。我在赫尔辛基地区的一家不同大学找到了一份工作。
在接下来的几年里,发生了许多事情。结果是 Linux 仍然缺少一些功能,所以人们开始着手解决这些问题。“开源” 这个术语被创造出来,IBM 在 Linux 开发上投入了大量资金。Netscape 发布了一个开源的网页浏览器版本。
跳过一些细节,许多年后,开源基本上统治了世界。LWN 开始运营,并每周报道了这些历史事件。
在 1991 年,Linus 写道,Linux “不会像 GNU 那样变得庞大和专业”。到了 2023 年,Linux 运行在每一个大洲,每一个海洋,数十亿台设备上,在轨道上,甚至在火星上。
这对于最初只是两个讨论帖,在屏幕上写下一串 A 和 B 的项目来说,已经相当不错了。
本文翻译自:《The early days of Linux》
https://lwn.net/Articles/928581/
↓分享、在看与点赞~Orz
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.