Linux 早期发展史


Linus Torvalds 的好友兼 Linux 发展的重要人物 Lars Wirzenius 发文详细讲述了他记忆中的 Linux 称,作为现在全球范围内都相当成功的一个项目,Linux 的开端其实并不起眼。

Linux 诞生之初的一些代码是由 Linus Torvalds 与 Lars Wirzenius 合写的,因此 Lars 也是第一个与 Linux 合作的开发者。不过后来 Lars 选择了在社区方面,而不是直接对内核做出贡献,并帮助回答问题、编写文档等等。他还曾打理了一个 Linux 相关的短暂的时事通讯,因为发表了对 Linus 的第一次采访而受到关注,之后被 comp.os.linux.announce 新闻组所取代。

 

根据 Lars 的回忆,1988 年秋天,他在赫尔辛基大学学习计算机科学时遇到了 Linus Torvalds;两人在第一学年快结束时,获得了对 Unix 服务器的访问权限。之后在 1990 年秋天,两人在服完兵役之后继续回到大学学习;选修了 C 和 Unix 编程课程,其中包括了相当多的 Unix 内核体系结构理论,因此两人也对 QNX 和 Plan 9 等其他操作系统内核进行了解。 彼时,两个 20 岁意气风发的年轻人,就已经开始讨论“应该如何正确构建操作系统”这一问题。

1991 年 1 月,Linus 从当地一家用零件组装计算机的商店购买了他的第一台 PC。为了满足 Linus 想探索多任务处理以及不想设备降级的需求,该 PC 配备了一个 386 CPU。与此同时,这台 PC 还拥有高达 4 兆字节的 RAM 和一个硬盘驱动器。在之后的几个月的时间里,Linus 的业余时间都花在了一个名为 Prince of Persia 的游戏上;后来还买了一份 MINIX。

As and Bs

游戏搞定后,Linus 开始学习英特尔汇编语言,并在某一天向 Lars 展示了他编写的一个执行多任务处理的程序:一个任务或线程会在屏幕上写入字母“A”的流,另一个是“B”;当流 As 变成 Bs 时,上下文切换在视觉上很明显。这也是后来被称为第一个 Linux 内核版本的东西。

后来,Linus 扩展了这个程序,并采用 C 语言编写了大部分内容。在这段时间里,也就是 1991 年春末,Lars 帮忙写了一个 C sprintf() 函数的实现,目前这段代码的核心仍然存在内核中。随着时间推移,内核不断更新变得更好:包括有了键盘和串行端口的驱动程序、屏幕的 VT100 终端转义序列仿真、并且可以用它通过调制解调器拨号到两人就读的大学。而有一次,在 Linus 不小心试图用硬盘驱动器拨打大学电话后,其主引导扇区变成了以“ATDT”和大学调制解调器池电话号码开头。但在解决了这一问题之后,Linus 就在内核中实现了文件权限。

时间线来到 1991 年 8 月,Linus 在 comp.os.minix 新闻组中首次公开提及了他的新内核,透露正在出于爱好开发新的免费操作系统 —— 最初命名为 Freax。几周后,Linus 要求 ftp.funet.fi 的管理员之一 Ari Lemmke 上传第一个 tar 存档,Ari 则选择了 Linux 这个名字。初始版本仍然包含嵌入其中一个源文件中的原始名称。

Linus 为有兴趣的用户提供了安装方法和说明,并上门为 Lars 进行了安装,而 Lars 的电脑也是真正意义上第一台安装了 Linux 的 PC。对此,Lars 则调侃称,“在这一切发生时,我正在小睡,我推荐这种安装 Linux 的方法:小睡,而 Linus 则在努力工作。”

Linux 的第一个版本使用了禁止商业用途的许可证,一些早期贡献者建议其更改为自由软件许可证。1991 年秋天,Lars 带 Linus 去听了 Richard Stallman 在芬兰的演讲;于是,在贡献者的压力以及 Lars 的劝说下,Linus 在 1992 年初选择了 GNU GPL 许可证。同一阶段,Linus 也在 Linux 中实现了虚拟内存。

1992

1992 年要从与 MINIX 作者 Andrew Tanenbaum 的那场著名辩论说起。Andrew Tanenbaum 对 Linux 及其架构有一些看法,Linus 则对 MINIX 有意见。Lars 称,“这场辩论彼时被描述为一场口水战,但事后看来实际上是相当文明的”。同年,X11 系统被移植到了 Linux 上,使 1992 年成为 Linux 桌面年。

第一个 Linux 发行版也始于 1992 年:Softlanding Linux System 或 SLS。第二年,SLS 演变为 Slackware,激发了 Ian Murdock 在 1993 年创建 Debian,以探索更加基于社区的开发结构。接下来,其他一些发行版也相继冒出。

1993 年,Linus 和 Lars 都被大学聘为助教。Linus 开始在学校办公室的 PC 上进行 Linux 开发,并在某一天用汇编语言重写了 Linux 内核命令行解析器以实现提速;两个人在这个办公室度过了一段快乐的时光。在后来的某个时候,Linux 获得了对以太网和 TCP/IP 的支持。

1.0

1994 年春天,Linux 好像已经足够成熟:用户可以用 Linux 进行自我编译、阅读 Usenet、同时运行许多 xeyes 程序副本。因此,1.0 版本的发布被提上了日程。

1995 年,Linus 和 Lars 在大学上了一门软件工程课程,其中主要包括一个建立在 Linux 之上的大型实践项目。Lars 表示,他当时出于一些经验坚持要使用一个版本控制系统,也正是这种经历导致 Linus 不喜欢 CVS,并且多年来拒绝使用任何版本控制,除了将 tar 包上传到 FTP 站点。同年,Linus 得到了一台 DEC Alpha 机器,并首次将 Linux 移植到新架构。

1997 年 Linus 毕业并移居美国,在 Transmeta 工作;Lars 则在赫尔辛基地区的另一所大学开始了新工作。在接下来的几年里:Linux 功能日益完善、“开源”一词被创造、IBM 在 Linux 开发上投入了大量资金、 Netscape 将其 Web 浏览器的一个版本作为开源发布等等相继。

Lars 称,“跳过一些细节和许多年,开源基本上占领了世界。1991 年,Linus 称 Linux 不会像 gnu 那样庞大和专业。 2023 年。Linux 正在各大洲、各大洋、数十亿台设备、轨道和火星上运行。对于一开始只是两个线程,在屏幕上写入 As 和 Bs 流的东西来说,这个结果还不错。”


相關推薦

2023-04-24

件系统、减少错误并提高可靠性;其有助于在开发过程的早期发现设计缺陷,节省时间和资源。“TLA+ Foundation 的成立旨在推动采用经过验证的形式化方法来构建稳健的软件。” 该语言在几十年前由现任 Microsoft Research 杰出科

2022-04-02

题。从该进化历程中,我们也可以一窥互联网的设计美学发展史。 早期版本(v1 ~ v3) 早期版本:Phoenix (2002, 09) 该版本名称一直保留到 2003 年 4 月 ,后来因为与 BIOS 制造商Phoenix 的商标纠纷而更改。... 从 Ubuntu 22.04 LTS 的开始,Fi

2021-11-30

改进。大部分显著的改进主要出现在 PHP 5.x 后期和 PHP 7.x 早期发布的时候。 在渲染测试方面,上图的测试结果也表明,PHP 8.1 的性能在朝着正确地方向继续发展。 值得一提的是,PHP 8.1 的峰值内存使用量甚至比以前的

2022-03-21

后统治(有点暴躁地)开发 Linux 内核的社区的故事,是早期开源运动的黑客精神的缩影。 但不可否认的是,开源已经发生了变化:它已经被企业界所接受,而这也改变了企业和开源社区。今天最有影响力的开源项目更有可能出

2022-04-02

题。从该进化历程中,我们也可以一窥互联网的设计美学发展史。 早期版本(v1 ~ v3) 早期版本:Phoenix (2002, 09) 该版本名称一直保留到 2003 年 4 月 ,后来因为与 BIOS 制造商Phoenix 的商标纠纷而更改。... 从 Ubuntu 22.04 LTS 的开始,Fi

2022-04-02

题。从该进化历程中,我们也可以一窥互联网的设计美学发展史。 早期版本(v1 ~ v3) 早期版本:Phoenix (2002, 09) 该版本名称一直保留到 2003 年 4 月 ,后来因为与 BIOS 制造商Phoenix 的商标纠纷而更改。... 从 Ubuntu 22.04 LTS 的开始,Fi

2023-03-04

合、拆分、查看状态、传递参数,这一特性使得 KubeVela 早期快速的打出了自己的市场定位,并且获得了像第四范式这样的早期用户。 早期演进:明确要坚守的核心技术原则 开源项目的早期通常是沿着最初设定的目标去补齐核

2022-12-03

历史博物馆向公众发布的 PostScript 源代码版本是一个非常早期的版本,可追溯到 1984 年 2 月下旬,因此相对而言有很多内容没有包含其中。虽然此版本确实包含后来作为商业机密保存的“font hinting”程序的早期版本,但这些方法

2023-09-27

失败之路在 1986 年就已清晰可见。Jacobson 描述了一些早期的拥塞崩溃事件,导致吞吐量下降了三倍。 延伸阅读 谷歌称 TCP 拥塞控制算法 BBRv3 表现出色,本月提交到 Linux 内核主线

2022-04-02

题。从该进化历程中,我们也可以一窥互联网的设计美学发展史。 早期版本(v1 ~ v3) 早期版本:Phoenix (2002, 09) 该版本名称一直保留到 2003 年 4 月 ,后来因为与 BIOS 制造商Phoenix 的商标纠纷而更改。... 从 Ubuntu 22.04 LTS 的开始,Fi

2024-02-16

Phone 一样。” 此外,阿尔特曼还称当前的世界仍处于 AI 早期阶段,“我们从未见过世界发生很大的变化,我认为原因在于我们目前拥有的技术就像黑白电视一样,还有很长的路要走。

2022-12-09

在下周 Linux 6.2 合并窗口打开之前的早期拉取请求中,有一项更改是默认为 Linux 内核构建启用“-funsigned-char”,这意味着如果没有指定,“-funsigned-char”编译器标志会将所有“char”字符类型设为无符号。 C 的 char 字符数据类

2023-03-18

nd.drv”的状态尚未为最终用户和游戏玩家准备好,仍处于早期阶段,正在进行开发。距离在原生 Wayland 支持之外再补充 (X)Wayland 支持,还需要很长一段时间,可能在 2024 年初发布的 Wine 9.0 稳定版能看到。 Wine 8.4 还对 IME 支持代

2022-02-25

1 年前作为 Linux 内核的第一个日志文件系统被引入,并在早期开源文件系统中提供了创新功能。有一段时间,ReiserFS 在 SUSE Linux 上被默认使用,并且在 Namesys 时代有着积极的功能开发。 但自从 ReiserFS 的主要开发者 Hans Reiser 在