# FreeBSD 和早期的 Unix 社区

* 原文：[FreeBSD and the Early Unix Communities](https://freebsdfoundation.org/wp-content/uploads/2023/06/losh_early_unix.pdf)
* 作者：WARNER LOSH
* 译者：basebyte【】为译者注

FeeBSD 是一个相互协作、相互帮助的社区，它使用户相互帮助，在一个共同的开放平台上开发出优秀的产品。我们可以追溯到 20 世纪 70 年代中期充满活力的 Unix 用户社区。然而，如果没有这些互惠互利的早期社区，我们就不会有 FreeBSD 的故事，甚至也不会有今天的 Unix 故事。

在这些早期的社区（以及其他类似的 1960 年代和 1970 年代的硬件和软件社区）中，孕育了如今蓬勃发展的开源社区。这些早期社区（如 IBM 的 SHARE 和 DEC 的 DECUS）之所以形成，是因为当时的计算机相当昂贵，而且用户常常面临各种相似的问题，这些问题可能与制造商的利益并不一致。社区成员不仅分享对厂商软件的修改，还分享解决厂商无意解决的问题的有趣程序。

## 不包括电池

20 世纪 70 年代初，美国电话电报公司（AT\&T）研究部门贝尔实验室（Bell Labs）的硬件项目：臭鼬（skunk works project）被取消，作为对该项目被取消的回应，Unix 应运而生。在 1973 年举行的 ACM 操作系统原理研讨会（SOSP）上，Ken Thompson 和 Dennis Ritchie 首次发表了关于 Unix 的公开演讲。1974 年 7 月出版的《ACM 通讯》发表了第一篇论文。由于复杂的法律原因，AT\&T 必须仅以复制的成本来免费提供任何为非商业用途而创建的酷炫的、非电话的技术。在这篇论文发表后，有关 Unix 的请求开始纷至沓来。

![losh\_early\_unix-1](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/1ecb301d-2b05-4b85-98de-8540f936798c)

第一批 Unix 磁带副本于 1974 年初推出。由于 AT\&T 被禁止提供技术支持，因此用户只能靠自己。AT\&T 只保证那些磁带可以读取，但几乎没有其他方面的保证。AT\&T 还被禁止销售任何非电话服务产品，因此这些磁带并不属于受支持的产品。从技术上讲，用户必须自己摸索如何使用和安装这个系统，但 Ken Thompson 参与了许多早期的安装工作。系统安装完毕后，用户就可以自己想办法解决遇到的任何问题。这与 IBM 或 DEC 等为用户提供广泛支持的大型计算机制造商形成了鲜明对比。如果你想运行 Unix，你就必须真的想要它。

第一批磁带发行后不久，第一个 Unix 用户组会议在纽约市开始召开。人们聚集在一起，讨论 Unix、如何使用它、遇到的错误等。美国电话电报公司（AT\&T）的员工也以非官方的身份参加了其中一些会议。最初的几次会议结束后，有关会议的消息不胫而走，参加会议的人越来越多，很快就开始出版一份名为《Unix News》的新闻通讯杂志，为不能参加会议的人记录有趣的新闻和八卦。第一期通讯杂志共发给了 37 人，但其中列出了约 50 位 Unix 用户的姓名和地址，就像一个目录，这样用户就可以相互联系、交流信息，并互相帮助学习如何使用这个新的操作系统。

![losh\_early\_unix-2](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/56a26885-4f13-4a7e-8e6d-fc8e3c2554b2)

虽然很难得到 Unix 早期受欢迎程度的确切数据，但我们可以做出一些合理的猜测。在 1974 年上半年，大概有 10 盘磁带上市。到 1975 年初，安装数量超过 50 台。到 1975 年年中，差不多有 100 台。到了 1975 年年底，安装数量接近 200 台。与此同时，Unix 在 AT\&T 内部也有了大幅增长。

这些用户团体并不局限于美国。英国和澳大利亚也有自己的用户组，并出版了他们自己的通讯杂志。在加拿大和欧洲，这些用户组作为 DECUS（Digital Equipment Corporation Users Society）的特别兴趣小组运行。即使是早期的《Unix News》通讯地址列表中，也包括了来自 10 个不同国家的用户。从早期开始，Unix 很快成为了一个国际化的事物。我们之所以知道这些细节，是因为有时这些通讯会转载其他使用 Unix 的用户组的页面。

## 首次法律诉讼

AT\&T 的法律部门善于保护 Unix 的名称和权利，但却不善于处理社区关系。首先，他们反对在没有严格法律声明的情况下谈论 Unix。Unix 许可证要求对源代码、方法和概念保密，因此法律部门强迫《Unix News》通讯杂志使用法律免责声明。

![losh\_early\_unix-3](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/3bdee864-5ce1-4406-be2e-8333d587c8ce)

接下来，他们不喜欢 Unix News 这个名字，因为它侵犯了他们的 Unix 商标，所以他们强迫使通讯杂志改名为“login：The Unix Newsletter”。将名称改为副标题似乎是一场没有必要的斗争。

几年内，英国、澳大利亚和欧洲也出现了其他 Unix 通讯杂志。每份通讯杂志都包含这一法律免责声明。保密协议在 Unix 的早期讨论中产生了很大影响，限制了在早期阶段发布 Unix 的许多酷炫特性，尽管大部分方法和概念已在《CACM》杂志的文章中发表。正如你所想象的，这让人们感到不快。

## 磁带大量涌现

Unix 用户从一开始就交换软件。当时的首选传输方式是磁带或移动硬盘（这两种传输方式的容量都在 10MB 左右）。在《CACM》出版后的一年内，一个充满活力的软件交换网络萌芽了。多伦多和哈佛最先组织了两次软件交换。多伦多的发行版包含一些额外的驱动程序和一些错误修复。哈佛的发行版则包括系统优化、交互响应速度改进以及一些大学计算环境所需的安全加固。这两个发行版都曾在 1975 年年中的第一期《Unix 新闻》中讨论过，当时只有大约 100 个外部 Unix 系统（和几百个用户）。

此外，在 CACM 文章发表后不到一年，Unix 已被适配在多处理器系统（MUNIX）上运行。MUNIX 的论文讨论了创建一个依赖于全局变量并通过加锁以保证线程安全的内核，这种方式现在大家都非常熟悉。这个软件的磁带也可以从位于蒙特利湾的海军研究站获得。一个处理器负责所有的数据采集，另一个处理器负责向用户显示数据和状态。来自伊利诺伊大学的 Net Unix 成功将 PDP-11 连接到 ARPAnet——这是互联网的前身。Net Unix 也是在 CACM 文章发表后一年内产生的，第一期《Unix News》对其进行了讨论，并在第二年使 PDP-11 成为 ARPAnet 上最受欢迎的计算机。由于它的源代码很容易获得，许多网络协议研究人员都以 Net Unix 为基础开展工作。它后来影响了 BBN 提供给伯克利的 TCP/IP 协议栈，成为上世纪 80 年代和 90 年代早期几乎所有 TCP/IP 网络协议栈的基础。

## 首次公开使用

波士顿儿童博物馆似乎是第一个在展品中使用 Unix 的博物馆。在 CACM 文章发表仅几个月后，该博物馆就已经对这一复杂系统进行了儿童防护处理，以便孩子们也能与之互动。博物馆的展览让孩子们通过有趣的图形游戏来探索编程。

这种情况的发生可能是因为该博物馆与哈佛大学有密切的联系，并且运行着哈佛修改版的 Unix 系统。由于与哈佛大学的合作，该博物馆在未来几年内还分享了更多的 Unix 创新版本。

## 移植 Unix

大约在同一时间，有三个团队将 Unix 移植到了完全不同的机器上。伍伦贡大学的 Richard Miller 和 Ross Nealson 将 Unix 移植到了 Intersil 7/32（32 位机器）上。Tom Lyon 和 Eric Schmidt，普林斯顿大学的学生，他们将 Unix 移植到 IBM 的 VM/360。AT\&T 也将自己的 Unix 移植到了 Intersil 8/32。

伍伦贡大学的移植工作无疑是其中最有趣的。当时，Miller 教授被聘请到大学的时候，承诺会购买一台 PDP-11 让他运行 Unix。然而，当他到达学校时，却发现学校已经购买了一台 Intersil 7/32，根本没有钱购买 PDP-11。于是，他小心翼翼地修改了 C 编译器，使其能生成 Intersil 机器码。但他没有办法运行这个 C 编译器，因为它需要 Unix 系统。于是，他开车 90 分钟去悉尼，使用那里的 PDP-11 计算机，运行了几次 Unix 系统来启动编译器。然后，他将 Unix 的其余部分移植到 Intersil 7/32，先作为用户库，然后作为用户进程中的 Unix 内核，最终作为原生的移植版本。所有这一切都只用了不到 6 个月的时间，而系统在 9 个月后就已经足够强大，可以投入使用了。对于一个从未接触过 Unix 的人来说，Miller 教授在获得磁带和开始这个任务方面表现出了令人难以置信的勇气和努力。

## 社区评论

同在伍伦贡大学的 John Lions 写了一本关于 Unix 内核的书，用于教授他的操作系统课程。起初，AT\&T 允许他发行这本书，但后来收回了许可，因为这本书写的太好了。AT\&T 的法务部门再次给 AT\&T 在 Unix 社区中提交了差劲的 PR【提交了负面的内容】。

![losh\_early\_unix-4](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/c3130869-d342-4c70-9039-b10439c1f6cc)

然而，对于 Lions 教授来说，事情最终进展得不错。由于他因这本书而声名鹊起，他成功获得了贝尔实验室的游学资格。当然，John 回信给澳大利亚 Unix 用户组，讲述了这个故事，并被刊登在他们的通讯中。他向这个用户组分享他旅程中的消息，就像写信给一个老朋友一样：

![losh\_early\_unix-5](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/54ad5427-2c88-4b69-96fc-9d80c52041bc)

(有关即将出版的第 7 版的大量信息以及有关 AT\&T 的其他信息省略）。

![losh\_early\_unix-6](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/928ec1c2-7df9-46f1-a3d4-36ff26f27b5d)

Lions 教授的一个研究生 David Hunt 也获得了在罗格斯大学的休学资格。AUUGN 的编辑 Ian Johnstone 刊登了 Hunt 关于保护 Lions 评论副本的报告。

![losh\_early\_unix-7](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/14e81b59-6127-41c3-bf25-37b25fd59a88)

## 会议和更多录音带

非正式的 USENIX 会议的规模和复杂程度不断提高。到 1977 年，美国东西海岸都出现了以正式演讲为特色的聚会。1977 年 9 月，超过 100 人参加了在 Menlo Park 举行的会议。USENIX 从大约 30 个早期的 Unix 用户那里收集了一些创新的软件，制成了现存最古老的磁带，被称为“第三次软件分发”。这个创新的磁带包括了原创的软件，使得今后的磁带制作更加容易。

用户社区为 Unix 创造的内容帮助了 Unix 的发展。用户组的通讯传播了信息，并促进了人们之间的联系。事实上，用户组之间经常发表彼此通讯中的文章，从而增加和加强了用户组社区之间的联系。对代码的慷慨共享和友好的氛围为今天蓬勃发展的开源社区，如 FreeBSD，奠定了基础。

## 启用 Unix

在 PDP-11 上，Unix 并不是唯一的操作系统。DEC 还针对不同的细分行业发行了其他几种操作系统。针对实时控制，他们提供了 RT-11 系统。针对商业和数字应用，他们提供了 RSX/11M 系统。DEC 还拥有当时最好的 FORTRAN 编译器（比 Unix 的编译器好得多）。许多大学都有运行着 RT-11 系统用于数据收集的 PDP-11 机器，还有其他运行 RSX/11M 系统进行数据分析的 PDP-11 机器。因此，最初对于运行 Unix 存在一些抵抗，因为 Unix 无法运行为这些环境编写的程序。许多人只好在白天运行 DEC 的操作系统，因为那时教授们通常都在，而晚上则运行 Unix，因为那时候那些喜欢使用 Unix 的怪人都在。

当时，DEC 以源代码的形式向大学分发了许多程序。因此，在 CACM 文章发表后的几年内，他们使用仿真库将 FORTRAN 和其他程序移植到了 Unix 系统，这些仿真库将原本是 RT-11 或 RSX/11M 系统调用翻译成 Unix 系统调用。如果你拥有所有正确的许可证，并能提供正确的文件，你可以从进行移植的大学获得这些程序的副本。

然而，这种方式过于繁琐，一些聪明的人注意到 PDP-11 有许多方法可以进行系统调用。幸运的是，RT-11 和 RSX/11M 使用一种方法，而 Unix 使用了不同的方法。于是，这些聪明人在 Unix 内核中添加了陷阱处理程序，将其转化为程序的信号。他们利用这一点创建了 RT-11 和 RSX/11M 的仿真程序，这样用户就不需要源代码就能在 Unix 上运行 DEC 软件。此外，在这些仿真程序的帮助下，那些在 RT-11 上运行程序的大学教授可以在 Unix 上不经修改地运行这些程序。英属哥伦比亚大学的 Bill Webb 于 1976 年编写了最早的仿真器。

突然之间，Unix 可以全天候运行，因为它能够执行这些专有操作系统的所有功能，这为它从计算机实验室扩展到更广泛的科学应用铺平了道路。Unix 用户创造了一些有用的东西，不仅使社区规模不断扩大，还扩大了其影响范围。由于用户之间的通力合作和他们慷慨共享的代码，Unix 能够比这些专有操作系统做得更多。

## DARPA 资助

我在一期 AUUGN 上看到了这个有趣的通知：

![losh\_early\_unix-8](https://github.com/basebyte/freebsd-journal-cn/assets/75151114/98c796fa-ddb4-4166-a551-29528d592a33)

这两句话虽然被证明只是传言，但却宣布了 Unix 的两个最重要的发展。“Level 7 Unix”宣布了第七版 Unix，这是贝尔实验室最后一个版本的 Unix。第七版将启动 AT\&T 的 Unix 商业化努力，并将 Unix 引入非学术用户。

这个“特殊协议”是指 AT\&T 向伯克利提供了第七版 Unix 的早期版本，该版本被移植到 VAX 计算机上并称为“32V”。伯克利将对 32V 进行改进，使其成为伯克利软件发行版（BSD）。美国政府通过 DARPA 为伯克利提供资金，为 VAX 计算机上的 Unix 增加高级功能。DARPA 资助了伯克利为 Unix 增加网络协议堆栈。尽管 AT\&T 也有一份 VAX 上的 Unix 版本，但几乎所有人都在使用伯克利的 Unix 版本。甚至贝尔实验室后来的 Unix 研究版本也是基于 BSD 开发的。

## 尾声

这个高度协作的社区继续开发创新和有益的系统和软件。伯克利发行版将强大的 Unix 带到许多大学和公司。它也被广泛移植。像 Sun 这样的移植公司经常向社区做出重大贡献。由于厌倦了 Unix 不断增加的法律负担，伯克利决定重新编写他们尚未增强的少数 Unix 系统部分，并发布了一个不受限制的发行版，名为 Net/2。

Net/2 很快被移植到 IBM PC 上。除了可以免费下载的版本外，许多公司也推出了自己的版本，还包含了相应的技术支持。BSD Unix 准备征服世界。然而，在自毁的最后一击中，AT\&T 的法务部门对这些版本进行了起诉。由此引起的混乱和不确定性导致了 Linux 的崛起，几年后，AT\&T 退出了 Unix 业务。这个故事太长，无法详述。

尽管如此，整个 BSD 社区，特别是 FreeBSD 社区，依然幸存下来。FreeBSD 和 Linux 之间形成了一种相互竞争的精神，从而导致了思想和技术的积极交流。在过去的 30 年中，同样的社区和共享精神一直延续至今，并继续蓬勃发展。FreeBSD 的互助社区继承了早期 Unix 用户组的传统，其规模比早期的用户组大了许多倍。FreeBSD 已在全球数以十万计的计算机上被广泛使用。

FreeBSD 吸引了企业用户，他们也会回馈 FreeBSD 以保持其存储和网络设备的竞争力。Isilon 和 NetApp 使用 FreeBSD 来构建他们的存储设备。Netflix 使用 FreeBSD 传输其所有视频内容。Juniper 的路由器使用它来传输网络数据包。这些企业用户也为项目做出了贡献，与其他众多用户一样，无论是老用户还是新用户。社区依然强大，并欢迎自 Unix News 成立以来的数代新用户。我们对 Unix 先驱们深表感激，是他们早期的坚持不懈和创新，才有了我们今天所享有的强大和支持性的开源社区。

***

**WARNER LOSH** 在 FreeBSD 项目成立之前，甚至在“开源”一词正式定义之前就一直在为开源做出贡献。他最近一直在深入研究 Unix 的早期历史，发现其中丰富而隐秘的遗产。他和妻子女儿一起生活在科罗拉多州的一间草屋中，这个草屋依靠太阳、小锅炉和偶尔使用的古董电脑取暖。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/qi-kan/20230506-freebsd-san-shi-zhou-nian-ji-nian-te-kan/unix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
