Linux 的 humble 起源

作者:Randolph Bentson

许多编程项目的历史都是通过口头传统来维护的。毕竟,哪个真正的程序员会花时间写下发生了什么?由于 Linux 的大部分是通过网络上的电子邮件对话开发的,因此存在稍微更确凿的记录。以下内容是从这些记录中收集的。

我们当中有多少人错失良机?

我最早在 1989 年秋季开始使用 Minix。Tanenbaum 博士的系统对于那些买不起 VAX 的人来说,是研究操作系统的理想工具。它运行在配备 640 KB 内存和软盘驱动器的 8086 上。您可以在多任务环境中运行一些程序,并且由于您拥有源代码,您可以随心所欲地更改系统。

“但是等等,”您可能会说,“Minix 不是 Linux。你在说什么?”

“我只是在铺垫,请耐心听我说一会儿。”

Minix 的目标受众是计算机科学课程中学习操作系统的学生。我曾在高年级课程中使用它,学期项目是“以某种有意义的方式增强系统”。项目范围从串行端口驱动程序到虚拟终端,再到简单的内存管理。没有人像 Linus Torvalds 在赫尔辛基大学所做的那样迈出巨大一步。(我真希望我能说我的一个学生正在改变个人计算的进程!)

基础

您可能知道,8086 的内存模型非常受限。它只能轻松访问 640 KB 的非虚拟内存。哎!但那是 Minix 的目标系统,因为它当时是最常见且最便宜的系统。

Linus 拒绝了这种观点,并认为要进行任何有趣的事情,需要虚拟内存。因此,他认为 80386 是他的系统的最低处理器要求。

他的项目是为一个虚拟内存、抢占式、多用户系统构建内核。它将具有与 Minix 非常相似的用户界面(事实上,它在一段时间内使用了与 Minix 相同的文件系统)以及 Unix 的用户界面。

从一开始,Linus 就提到了 GNU 便携式内核 Hurd,并明确表示他没有计划取代 Hurd。由于 Hurd 预计将于 1992 年底发布,因此 Linux 显然只是黑客的乐趣。

日益普及

到 1991 年 4 月 Linus 构思他的项目时,Minix 已经改变为支持改进的 Intel 处理器,但仍然有扩展空间。最初,Linux 被视为 Minix 项目,但到夏末,差异开始显现。

早期版本被标记为 0.01(91 年 9 月)、0.02(91 年 10 月)、0.03(91 年 11 月)等,暗示它们实际上不是发布版本,而更像是正在进行的工作的快照。

Linus 聚集了一些支持者,他们会使用和改进他的工作,并感谢能够尽快收到(和贡献)已开发的修复程序。随着更多限制的解除,内核很快开始支持 Unix 内核期望的所有系统调用。

Linus 移植了 gcc 和 bash,因此有了一个基本的编译器和命令解释器。(虽然,准确地说,编译是在 Minix 版本 0.12 之前完成的。)在 comp.os.minix 中,有人讨论了另起炉灶并启动另一个操作系统的明智性,但 Linus 有他的梦想,或者,有些人会说,他很固执,并且坚持了下来。

到 1992 年 1 月,0.12 版本只需稍加注意即可构建和运行,因此,为 Linux 的普及做出了很大贡献。

其他项目加入...

应该指出的是,这不是唯一用于家用计算机的免费 Unix 系统。386BSD 正在加利福尼亚州开发,它是伯克利 Unix 的衍生产品,该系统已在世界各地的大学校园中广泛分发。在某种程度上,386BSD 是 Linux 被比较的基准。

与此同时,各种 GNU 工具在 Unix 领域变得非常成熟。标准 C 编译器 gcc 经常被发现比大多数供应商的编译器更好,而其他工具通常比供应商版本更健壮且功能更全。将 GNU 应用程序与 Linux 内核适配对于 Linux 的成功是自然且必要的。

不断增长的 Linux 用户社区并不害怕从世界各地的来源构建系统。第二个外部产品 X Window System 为使用高端显示器的 Linux 用户提供了 GUI 界面。第三个产品 NetBSD 为 Linux 获得完整的互联网支持提供了跳板。

The Humble Beginnings of Linux

生产版本

最初的编号方案有一些限制,但诸如“0.11 是在 0.2 之前还是之后?”之类的问题被安全地避免了,并且编号很快达到了 0.99 的限制值。该版本被广泛分发,并被认为是 Linux 内核的第一个全功能版本。到那时,已经有一个相当大的用户社区依赖于内核的稳定版本。尽管此版本有很多补丁和子补丁——通常每天都会收到——但基本版本 0.99 适合发布。

伟大的发布发生在 1994 年初,当时 Linus 确定了一个稳定的补丁级别 (0.99pl14r),清理了一些最后的问题,并称其为良好。此操作被称为“代码冻结”,并产生了版本 0.99pl15,该版本保持稳定足够长的时间以进行错误修复,但没有进行增强。

代码冻结和伟大发布的一部分是认识到 Linux 已成为生产系统的合适基础——这些系统致力于完成有用的工作,而不是成为程序员的阴谋诡计的对象。这造成了一个困境:Linux 如何才能继续发展又保持稳定?

解决方案很简单:从同一点开始有两条开发路径。偶数编号的版本(1.0.0、1.0.1、1.0.2 等)遵循生产发布系统的缓慢而谨慎的演变,而奇数编号的版本(1.1.0、1.1.1、1.1.2 等)将是快速变化的实验系统。版本 0.99pl15(进行了一些修复)是这两个系统的基础。一些重要的修复在 1994 年初将 1.0.0 升级到 1.0.9,但该系统开发路径自年中以来一直没有改变。相比之下,1.1.0 在前 10 个月中经历了 50 多次更改。

现在正在为下一个主要版本制定计划。同样,实验版本(超过 1.1.60)的稳定且经过良好测试的功能将合并到名为 1.2.0 的生产版本中。它的孪生版本 1.3.0 将成为内核上更多实验性工作的基础。

伟大发布中发生的另一件事是,发布本身不再编目其更改。当 Russell Nelson,nelson@crynwr.com 自愿在每个补丁分发后不久分发更改摘要时,弥补了这一缺点。

发行版套件

在内核开发的整个过程中,我提到的工具以及其他工具也在同时开发。用户讨论的主题之一是他们为自己的系统收集了什么。由于新用户不想在网上搜索关键部件,因此确立了“标准发行版”的想法。

一种常见的交换媒介是软盘,因此发行版套件通常以 MS-DOS 可读磁盘映像的形式发布。可以复制朋友的磁盘集,然后引导 Linux。如果您身处大型社区附近,则很可能附近有 Linux 或 Unix 用户组。如果幸运的话,您会找到一套软盘可以借用。如果失败了,几乎可以肯定您会找到某人将其发行版复制到您的软盘上。

发行版套件包括:Debian、MCC、Slackware、Software Landing Systems (SLS)、SUSE、TAMU、Yggdrasil。

发行商

这些发行版套件通常存储或维护在 ftp 站点上,并镜像到其他 ftp 站点。许多公告板维护这些发行版的副本。这为您提供了获取 Linux 的第二种途径:您只需通过调制解调器下载 50 兆字节即可。

第三个也是我认为最重要​​的获取 Linux 的途径是 CD-ROM。许多公司在单张 CD-ROM 上发布一个或多个(我见过多达四个)发行版。这些公司在其软件包中添加了许多其他材料,例如 X-Windows、GNU 源代码和存档站点的快照(其中包含其他非发行版套件软件),并以 20 美元到 40 美元的价格出售。由于仅发行版套件就很容易花费 20 美元的软盘,因此这非常划算!当现在可以以不到 100 美元的价格购买单速 CD-ROM 驱动器时,通过 CD-ROM 获取发行版非常有吸引力。

当前的一些 Linux CD-ROM 发行商包括:InfoMagic、Morse Telecommunication、Nascent、Red Hat Software、Trans-Ameritech、Walnut Creek 和 Yggdrasil Computing, Inc.

应该注意的是,发行版套件的编号与内核本身的编号不同,并且 CD-ROM 可能还有另一种识别版本的方式。当有人提到“1993 年秋季发布版”或“2.0 发布版”时,这可能会导致混淆。如果您查看 /usr/src/linux/Makefile,您会在前几行找到版本、补丁级别和子级别。查看发行版根目录中的 README 类型文件以确定套件的版本。

似曾相识

我第一次接触 Unix 是在 1980 年,当时我被递给了三卷 2400 英尺长的半英寸磁带和一堆两英尺高的复印手册页。有人指着 VAX 并祝我好运。

那是一段令人兴奋的时光,生活在边缘,在没有安全网的情况下工作。一个人的电话簿(其他系统管理员的电话簿)对于一个人的生存至关重要。每个人(系统管理员和选定的学生)都有源代码,并且人们期望深入内核并修复问题。

但到了 1980 年代后期,情况变得有些无聊:供应商仅为其 Unix 系统分发目标文件,并且有商业上可用的支持小组可以联系。人们期望管理配置文件并提交错误报告——然后等待更正。

就在上周的一次谈话中,我指出那些黄金时代又回到了我们身边,而且变得更好了。首先,站点和内核程序员的数量增长了十倍或一百倍,因此有更多的人贡献修复和改进。其次,由于我们是在个人计算机上运行,因此我们更改的影响是本地化的,而且我们更自由地探索。最后,随着互联网服务的普及,我们彼此之间的联系更加紧密。

这是一个多么有趣的时代!

Randolph Bentson (bentson@grieg.seaslug.org) 自 1969 年以来一直靠编程赚钱——用汇编代码编写的任务内核比他愿意承认的还要多。他的第一个高级语言操作系统是 UCSD P-system。在过去的近 14 年里,他一直在使用 Unix,在过去的一年里,他一直在享受 Linux。Randy 是 Cyclades 串行 I/O 卡的 Linux 驱动程序的作者。

加载 Disqus 评论