F/OSS 漫画 #13:BSD Unix,第三部分——BSD Unix 的起源
摘要
F/OSS Comics #13 以漫画形式讲述 BSD Unix 的起源:Bill Joy 和 Chuck Haley 在 Ken Thompson 返回 Bell Labs 后自行探索 Unix 内核,于 1977 年打包 Pascal 系统与 ex 编辑器发布首个 BSD,并在 2BSD 中加入 vi、C shell 等工具,随后与 Özalp Babaoğlu 一起为 VAX 上的 32/V 加入虚拟内存支持。
暂无内容
查看缓存全文
缓存时间: 2026/11/02 03:31
# 13. BSD Unix,第 3 部分 - BSD Unix 的开端
来源:https://fosscomics.com/posts/13.%20BSD%20Unix%20Part%203%20-%20The%20Beginning%20of%20BSD%20Unix/
- BSD Unix,第 1 部分 \- Unix 代码来到加州大学伯克利分校 (https://fosscomics.com/posts/11.%20BSD%20Unix%20Part%201%20-%20Unix%20Code%20Goes%20to%20UC%20Berkeley/)
- BSD Unix,第 2 部分 \- vi 编辑器的诞生 (https://fosscomics.com/posts/12.%20BSD%20Unix%20Part%202%20-%20The%20Birth%20of%20the%20vi%20Editor/)
**BSD Unix 的开端**
1976 年,Ken Thompson 返回贝尔实验室后,Bill Joy 和 Chuck Haley 开始自行探索 Unix 内核。
> 嗯……我们可以在内核的这里做些优化,让它运行得更快。
> 其他大学想要我们 Pascal 编译器的副本。
> 我们把它和 ex 打包在一起,给他们寄一盘磁带吧。
1977 年初,Bill Joy 将 Pascal 系统与 ex 打包,整理出了伯克利软件发行版,即 BSD。ex 是一个由 em 发展而来的行编辑器。早期的 BSD 并不是一个独立的操作系统,而是一组安装在现有 Unix 系统上的软件。在随后一年里,大约寄出了三十份副本。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)
当时,获取 BSD 需要持有 AT&T 的 Unix 源代码许可证。伯克利只收取磁带和分发费用。[\[2\]](https://www.salon.com/2000/05/16/chapter_2_part_one/)
> 如果你已经有 Unix 源代码许可证,那就只需支付磁带和邮寄费用。
伯克利早已有共享科研软件的传统,BSD 延续了这一传统。据说,伯克利的言论自由运动、嬉皮士文化和反战活动,也影响了 Joy 将收费定得如此低的决定。[\[2\]](https://www.salon.com/2000/05/16/chapter_2_part_one/)
人们举着写有“言论自由”的标语牌一起游行。
大学和研究机构只需支付不高的许可费,就能获得 Unix 及其源代码。这也推动了该系统的传播。[\[2\]](https://www.salon.com/2000/05/16/chapter_2_part_one/)[\[6\]](https://spectrum.ieee.org/the-strange-birth-and-long-life-of-unix)
> 我们有 Unix,但反垄断协议禁止我们进入计算机行业……我们也不能把它作为产品销售。
**第二个发行版:2BSD**
首个 BSD 发行版发布后,Joy 根据用户反馈改进了 Pascal 系统。他将其与 vi \(ex 的可视模式\)、C shell 和其他工具打包,组成了第二版伯克利软件发行版,即 2BSD。在随后一年里,寄出了近七十五盘磁带。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)[\[5\]](https://www.tuhs.org/Archive/Distributions/UCB/2BSD/)
Joy 做的不只是修复错误。他还亲自处理每一份发行请求,将 BSD 复制到磁带上,再邮寄出去。
> 哦,你需要一份 BSD?
> 又有一所大学想要一份。
> 调优内核。修复错误。
**1978 年,一台 VAX 来到伯克利**
> Fateman 教授的研究组要添置一台 VAX。它是 32 位的,有整整一兆字节的内存。
> 真的吗?我们应该在上面装 Unix。
> 他们已经从贝尔实验室拿到了 VAX Unix,叫作 32/V。
> 我的导师让我给 VAX Unix 添加虚拟内存功能。你能帮我检查一下代码吗?
Babaoglu 是伯克利的一名研究生,师从 Domenico Ferrari 教授。Joy 帮助他将虚拟内存代码集成到 32/V 中,并进行调试。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)[\[4\]](https://www.cs.unibo.it/~babaoglu/)
当时,32/V 并未使用 VAX 硬件的虚拟内存功能。程序的地址空间受到物理内存的限制,而 Richard Fateman 教授对计算机代数系统 Macsyma (https://en.wikipedia.org/wiki/Macsyma) 的研究需要更大的地址空间。虚拟内存利用磁盘存储,为程序提供大于物理内存的地址空间。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)
Macsyma 于 20 世纪 60 年代末开始在麻省理工学院开发,用于处理符号表达式。它能够对表达式进行因式分解、求导和积分。
调试工作一直持续到 1978 年底的假期。
> 假期不出去吗?
> 趁用 VAX 的人少,正好调试一下这个。
到 1979 年 1 月,大多数错误都已修复。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)
> 来试试带虚拟内存的 Unix 吧。
> 终于能正常运行,不再崩溃了。
Joy 将 ex、vi、C shell 和其他 2BSD 工具移植到了 VAX 上,Peter Kessler 和 Marshall Kirk McKusick 则移植了 Pascal 系统。这些程序与标准的 32/V 实用工具,以及由 Babaoglu 和 Joy 集成并调试完成的虚拟内存内核一起打包。由此诞生的 3BSD 于 1979 年 12 月开始分发。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)
> 总算可以把这些寄出去了。
自 1969 年起,ARPANET 就一直在连接由美国国防高级研究计划局,即 DARPA,资助的研究机构。[\[3\]](https://www.sri.com/hoi/arpanet/)但各个站点使用不同的计算机和操作系统,导致软件移植或重写的成本很高。DARPA 开始对 Unix 的可移植性感兴趣,也注意到了伯克利成功向研究机构分发 3BSD 的成果。[\[1\]](https://www.oreilly.com/openbook/opensources/book/kirkmck.html)
> BSD 在这台 VAX 上运行得相当不错。
**参考资料**
1. Marshall Kirk McKusick,《伯克利 Unix 二十年》 (https://www.oreilly.com/openbook/opensources/book/kirkmck.html),收录于《*开源:来自开源革命的声音*》,1999 年。韩文版,Hanbit Media (http://www.hanbit.co.kr/store/books/look.php?p_code=E5329835060),2013 年。
2. Andrew Leonard,《BSD Unix:代码赋予人民力量》 (https://www.salon.com/2000/05/16/chapter_2_part_one/),Salon,2000 年。
3. SRI International,ARPANET (https://www.sri.com/hoi/arpanet/)。介绍其起源以及 1969 年的首次传输。
4. Ozalp Babaoglu,个人简介 (https://www.cs.unibo.it/~babaoglu/)。介绍他在伯克利攻读研究生期间开展的 Unix 虚拟内存研究。
5. Unix 历史学会 \(TUHS\),原始 2BSD 发行版档案 (https://www.tuhs.org/Archive/Distributions/UCB/2BSD/)。包含安装文档 `install\.ms` 和 `2bsd\.tar\.gz` 中的源代码。
6. Warren Toomey,《Unix 的奇特诞生与漫长生命》 (https://spectrum.ieee.org/the-strange-birth-and-long-life-of-unix),IEEE Spectrum,2011 年。
相似文章
PDP 计算机简史
简要回顾 DEC 公司 PDP 系列计算机的发展历程,探讨从 PDP-1 到 VAX 如何塑造了早期黑客文化,并直接影响了 Unix、C、Emacs、Lisp 等基础软件的诞生与发展。
数学很难(VAX 上的 OpenBSD)
OpenBSD 开发者细数 VAX 浮点异常的恼人怪癖,以及它们如何给内核移植添堵。
我尝试将 NetBSD 作为桌面系统使用,感觉像是以一种美好的方式步入了 90 年代
文章讲述了作者安装和使用 NetBSD 作为桌面操作系统的体验,强调了它的复古感以及作为 BSD Unix 后裔的历史意义。
Unix中的古怪注释和奇怪行为
丹尼斯·里奇讲述了早期Unix源代码中一些古怪的错误信息和注释,包括著名的“values of β will give rise to dom!”以及那句不可思议的注释“You are not expected to understand this.”
访谈:Doug McIlroy
与计算机先驱Doug McIlroy的访谈,讨论他对Unix和C的贡献,包括早期程序如echo和sort,以及他在Bell Labs的工作。