FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • FreeBSD 网络文章集锦
  • FreeBSD 特色开发项目(滚动更新)
  • 2025 年
    • 伯克利 Unix 二十年——从 AT&T 掌控到自由分发
    • BSD 在 Unix 发展中的角色
    • FreeBSD 爱好者团结起来支持新兴项目 zVault——社区分支继 TrueNAS CORE 之后继续发展
    • 从 PlayStation 到路由器,你很可能一直在使用 FreeBSD 而不自知
    • FreeBSD 并没有死,别听信那些夸张的说法
    • FreeBSD 上的 ZFS 日志压缩
    • 为 FreeBSD 发声:FOSDEM 2025 参会报告
    • zfs 速查手册
    • FreeBSD 开发计划
    • 谁在使用 FreeBSD(基金会官方版本)
    • 如何将基于 Electron 的应用程序移植到 FreeBSD
    • FreeBSD:原始操作系统发行版的火炬传承者
    • 浏览 FreeBSD 新的季度和两年一次发布计划
    • FreeBSD 日专访 BSD 守护神 Beastie
  • 2024 年 11 月
    • 苹果的开源基石:macOS 和 iOS 背后的 BSD 传统
    • 在动荡的开源世界中保持稳定:FreeBSD 的持久稳定性
    • 为什么你应该使用 FreeBSD
    • FreeBSD 13.4: 新特性及其发展历程
    • Quantum Leap Research 和 FreeBSD 基金会将投资 75 万美元以改善笔记本电脑支持和用户体验
    • 主权科技基金将投资 68.64 万欧元用于 FreeBSD 基础设施现代化
  • 2024 年 7 月
    • BSD 老将:Michael J. Karels 逝世,享年 68 岁
    • 讣告——Michael "Mike" John Karels
    • 配置自己的 VPN——基于 OpenBSD、Wireguard、IPv6 和广告拦截
    • 如何在 FreeBSD 中指定 CPU 类型
    • 使用 BIOS 引导和 UEFI 引导的 GPT 分区的区别和制作方法
    • 通过替换 ZFS 镜像池中的磁盘来扩容
    • 通过将 ZFS 池构建为镜像结构,消除异常数据的影响
    • ZFS 池破坏实验
    • FreeBSD ports 开发技术研究
    • FreeBSD pkg 命令概述
    • portsnap 被淘汰了,本应由 git 代替,但结果我发现自己用的是 got
    • ccache 在构建 FreeBSD 的 buildworld 时的效率
    • 关于对 FreeBSD 发布计划和生命周期的修订
  • 2023 年 12 月
    • FreeBSD 新手?来参与社区吧
    • 介绍来 FreeBSD 的学生
    • EuroBSDCon 2023 旅行报告——Bojan Novković
    • 什么是开发播客?FreeBSD 项目的演变
    • EuroBSDCon 2023 旅行报告——Mark Johnston
    • TalkDev:探索开源的未来
    • 为什么选择 FreeBSD?Metify 展示迁移到 FreeBSD 如何对两个新产品进行增强
    • FreeBSD 基金会宣布通过 SSDF 认证
    • 2023 年全球开放大会报告
    • FreeBSD v14:恪守类 Unix 操作系统传统,提升安全性与性能
  • 2023 年 9 月
    • 认识 2023 年参与 FreeBSD 谷歌编程之夏项目的学生:Soobin Rho
    • 认识 2023 年参与 FreeBSD 谷歌编程之夏项目的学生:Aymeric Wibo
    • FreeBSD 企业工作组首次会议总结
    • 认识 2023 年 FreeBSD 谷歌编程之夏的学生:Sudhanshu Mohan Kashyap
    • 认识 2023 年夏季滑铁卢大学合作学生:Naman Sood
    • FreeBSD 基金会 2023 年暑期实习生:Jake Freeland
    • 第二次企业工作组会议回顾
    • OpenBSD 与 FreeBSD:有何不同,哪个更好?
  • 2023 年 9 月以前
    • 在 FreeBSD 的 jail 中安装 NextCloud
    • 参与宣传:2023 年 5 月的 FreeBSD 开发者峰会和 BSDCan
    • 恭喜 FreeBSD 迎来 30 周年!为什么开源项目 FreeBSD 能够持续存在
    • 庆祝 FreeBSD 成立 30 周年:许可证
    • 聚集在开放领域工作的公益和慈善基金会
    • 在 Linode 上安装 pfSense
    • 在 FreeBSD 的 jail 中安装 NextCloud
    • 将 FreeBSD 上的 Ansible 主机和客户机都安装在 Jail 中
    • FreeBSD 简介 | BSD.pw 研讨会
    • 如何在 FreeBSD 上安装 Python
    • 升级到 FreeBSD 13.2 的十大理由
    • 采访 FreeBSD 基金会执行董事 Deb Goodkin
    • 我们使用开源的 FreeBSD 作为企业操作系统的 5 个原因
    • 关于 BSD 与 Linux 的典型讨论
    • OpenBSD 太棒了
    • systemd 背后的真正动机
    • systemd 在任何地方都不安全
    • 为什么你应该将所有东西从 Linux 迁移到 BSD
    • 如何在 FreeBSD 上设置一个简单且实际工作的 WireGuard 服务器
    • 选择 FreeBSD 而非 GNU/Linux 的技术性原因
    • GPL 之殇
    • FreeBSD 与研究社区
    • 在 OpenBSD 和 FreeBSD 之间选择的区别
    • FreeBSD 是一个令人惊叹的操作系统
    • 留意日期:2023 年 11 月的自由软件组织厂商峰会
    • JENNY 日常使用的系统:FreeBSD 13.2
    • FreeBSD Ports 中的 OPTIONS 功能介绍——使用 OPTIONS_SET/OPTIONS_UNSET/NO_DIALOG 进行操作和实践
    • FreeBSD Bhyve 上的 PCI 直通
    • 2023 年 FreebBSD 谷歌编程之夏学生介绍:Raghav Sharma
    • 2023 年 7 月软件开发项目进展报道
    • 用于研究的 FreeBSD:CHERI/Morello
    • 在 FreeBSD Jail 中使用 OpenRC 启动并运行 Devuan GNU+Linux 系统
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
  • 早期历史
  • 早期发行版
  • VAX Unix
  • 美国国防高级研究计划局(DARPA)的支持
  • 4.2BSD
  • 4.3BSD
  • Networking, Release 1
  • 4.3BSD-Reno
  • Networking, Release 2
  • 诉讼案
  • 4.4BSD
  • 4.4BSD-Lite,第二版
在GitHub上编辑
导出为 PDF
  1. 2025 年

伯克利 Unix 二十年——从 AT&T 掌控到自由分发

  • 作者:Marshall Kirk McKusick

  • 注:本文属于《开源软件文集》中的一节。中国电力出版社,ISBN: 9787508301983

早期历史

Ken Thompson 和 Dennis Ritchie 于 1973 年 11 月在普渡大学操作系统原理研讨会上首次发表了 Unix 论文。加州大学伯克利分校的 Bob Fabry 教授出席并立即对获取系统副本以在伯克利实验产生兴趣。

当时伯克利只有大型批处理主机,首要任务是购买一台适合运行当时 Unix 第 4 版的 PDP-11/45。伯克利的计算机科学系、数学系和统计系联合购买了该机器。1974 年 1 月,Unix 第 4 版磁带交付,研究生 Keith Standiford 完成安装。

Ken Thompson 没有亲自参与安装,但因多次系统崩溃进行了远程调试。他通过 300 波特的声耦合调制解调器远程协助解决问题,发现多起崩溃因磁盘控制器无法正确执行重叠寻道操作。

Thompson 的远程调试开启了伯克利与贝尔实验室的合作,贝尔实验室研究者积极分享成果,促进伯克利软件快速迭代。

尽管 Unix 运行稳定,但计算机科学、数学和统计系在系统使用时间上存在矛盾,最终达成轮班使用协议,Unix 和 DEC 的 RSTS 系统交替运行。操作系统课程学生更喜欢在 Unix 上完成项目。

教授 Eugene Wong 和 Michael Stonebraker 的 INGRES 数据库项目最早从批处理环境转向 Unix 交互环境。1974 年春,他们购买了运行 Unix 第 5 版的 11/40。1974 年秋首次发布 INGRES,成为计算机科学系首个对外发布软件的项目。

即使 INGRES 离开 11/45,学生仍面临机时不足。Stonebraker 和 Fabry 教授于 1974 年 6 月开始为计算机科学系争取两台教学用 11/45,1975 年资金到位时 DEC 发布了更优的 11/70。用买两台 11/45 的钱购买了一台 11/70,1975 年秋到货。

Ken Thompson 在 1975 年秋作为访问教授回到伯克利,和 Jeff Schriebman、Bob Kridle 一起在 11/70 上运行 Unix 第 6 版。

1975 年秋,两位研究生 Bill Joy 和 Chuck Haley 对新系统产生兴趣,扩展了 Ken Thompson 早期开发的 Pascal 系统,因其优秀的错误恢复和快速编译执行,成为学生首选。

Model 33 电传打字机被 ADM-3 屏幕终端替代后,Joy 和 Haley 基于从 George Coulouris 教授处获得的 em 编辑器,开发了行模式编辑器 ex。

Ken Thompson 于 1976 年夏末离开后,Joy 和 Haley 在 Schriebman 监督下开始探索 Unix 内核,安装了贝尔实验室提供的“50 个变更”补丁,并提出多项内核性能改进建议。

早期发行版

与此同时,Pascal 编译器中的错误恢复工作引起了大家的关注,纷纷请求获得系统副本。1977 年初,Bill Joy 组建了“伯克利软件发行版”(Berkeley Software Distribution,简称 BSD)。首次发行包含了 Pascal 系统,以及 Pascal 源代码中一个不起眼的子目录里的编辑器 ex。在接下来的一年中,Joy 作为发行负责人,免费发送了大约三十份系统副本。

随着带有屏幕可寻址光标的 ADM-3a 终端的到来,Joy 终于能编写出 vi,将基于屏幕的编辑带到了伯克利。他很快遇到一个难题:由于经费紧张,学校的老设备无法一次性全部替换。为了避免为多种终端编写不同的优化更新代码,他决定通过一个小型解释器来统一屏幕管理。该解释器根据终端特性描述驱动,这项工作最终发展成了 termcap。

到了 1978 年中,软件发行显然需要更新。Pascal 系统因用户反馈变得更稳健,并分成两个阶段以便能在 PDP-11/34 上运行。更新后的版本被称为“第二版伯克利软件发行版”,简称 2BSD。除了改进的 Pascal 系统,还包含了适用于多种终端的 vi 和 termcap。同样由 Bill Joy 一人负责组装发行版、接听用户电话并将反馈融入系统。接下来一年中,寄出了近七十五份磁带。虽然 Joy 随后转向其他项目,2BSD 发行版仍持续扩展。其最终版本 2.11BSD 是一套完整系统,至今仍在世界各地数百台 PDP-11 上运行。

VAX Unix

1978 年初,Richard Fateman 教授开始寻找一台更大地址空间的机器,以继续他在 Macsyma 项目上的工作(最初在 PDP-10 上启动)。新发布的 VAX-11/780 满足要求且在预算内。Fateman 和其他十三位教师联合申请了 NSF 资金,并结合部门经费购买了这台 VAX。

最初,VAX 运行 DEC 的 VMS 操作系统,但部门已习惯 Unix 环境并希望继续使用。VAX 到达后不久,Fateman 获得了 Bell Labs 的 John Reiser 和 Tom London 提供的 Unix 32/V 移植版。

虽然 32/V 在 VAX 上提供了第 7 版 Unix 环境,但未利用 VAX 硬件的虚拟内存功能。它仍是基于交换的系统,Macsyma 团队因此受限于物理内存大小(初始为 1MB),限制了进程地址空间。

为解决这一问题,Fateman 找到系统系教授 Domenico Ferrari,探讨让其团队为 Unix 编写虚拟内存系统的可能性。Ferrari 的学生 Ozalp Babaoglu 开始研究如何在无引用位的 VAX 上实现工作集分页系统。

Babaoglu 接近第一个版本时,向 Bill Joy 求助了解 Unix 内核细节。Joy 被其方法吸引,加入集成代码和调试工作。

不幸的是,伯克利只有一台 VAX 供系统开发和生产使用。圣诞节期间,用户轮流登录 32/V 和“虚拟 VAX/Unix”,系统常常突然中断,随后出现 32/V 登录提示。1979 年 1 月,大多数 Bug 被修复,32/V 被淘汰。

Joy 预见 32 位 VAX 会取代 16 位 PDP-11,开始将 2BSD 软件移植到 VAX。Peter Kessler 和我负责移植 Pascal,Joy 移植编辑器 ex、vi、C shell 及其他 2BSD 程序。1979 年底,完整发行版成型,包含虚拟内核、标准 32/V 工具和 2BSD 增补。1979 年 12 月,Joy 发送了近百份首个伯克利 VAX 发行版 3BSD。

贝尔实验室的最后一个发行是 32/V,此后 AT&T 的 Unix 发行(起初是 System III,后来是 System V)由另一家专注于稳定商用版本的团队管理。随着 Unix 商业化,贝尔实验室研究人员无法继续作为 Unix 研究的集散地。研究社区持续修改 Unix,迫切需要一家能发布研究版的组织。凭借早期参与 Unix 和发布相关工具的经验,伯克利迅速承担了贝尔实验室原先的角色。

美国国防高级研究计划局(DARPA)的支持

与此同时,美国国防高级研究计划局(DARPA)的策划部门正在进行一场讨论,这场讨论对伯克利的工作产生了重大影响。DARPA 早期的一项成功是建立了一个覆盖全国的计算机网络,将其所有主要研究中心连接起来。当时,他们发现许多研究中心的计算机即将服役期满,必须更换。更换的最大成本在于将研究软件移植到新机器上。此外,由于硬件和操作系统的多样性,许多站点无法共享软件。

由于各研究组的计算需求差异巨大,且依赖单一硬件供应商并不理想,选择单一供应商不可行。于是,DARPA 的策划者们决定在操作系统层面统一。经过多次讨论,Unix 因其经验证的可移植性被选为标准。

1979 年秋,Bob Fabry 针对 DARPA 采用 Unix 的意向,提出一项建议,建议伯克利为 DARPA 社区开发增强版 3BSD。Fabry 在一次 DARPA 图像处理和 VLSI 承包商会议上携带此提案,会议还有 ARPAnet 开发者 Bolt、Beranek 和 Newman 的代表参加。虽然有人对伯克利能否产出可用系统存疑,但 1979 年 12 月发布的 3BSD 几乎消除了所有疑虑。

借助 3BSD 发布带来的良好声誉,Bob Fabry 于 1980 年 4 月获得 DARPA 一份为期 18 个月的合同,用于添加 DARPA 承包商所需功能。在此合同支持下,Fabry 成立了名为计算机系统研究小组(Computer Systems Research Group,简称 CSRG)的组织。他立即聘请 Laura Tong 负责项目管理。Fabry 开始寻找项目负责人管理软件开发。他原以为刚通过博士资格考试的 Bill Joy 会优先完成学业而拒绝此职,但 Joy 另有打算。三月初的某晚,Joy 致电 Fabry 表示有意接手 Unix 的进一步开发。Fabry 虽感意外,但很快同意了。

项目迅速启动。Tong 建立了一款比 Joy 之前发行更能处理大量订单的分发系统。Fabry 协调 AT&T 的 Bob Guffy 与加州大学律师,正式以各方都接受的条款发布 Unix。Joy 集成了 Jim Kulp 的作业控制,增加了自动重启、1K 块文件系统以及对最新 VAX 机器 VAX-11/750 的支持。1980 年 10 月,包含 Pascal 编译器、Franz Lisp 系统和增强邮件处理系统的 4BSD 发行版问世。其九个月内发出近 150 份,授权按机构而非机器计数,约覆盖 500 台机器。

随着伯克利 Unix 的广泛分发和知名度提升,批评者开始出现。斯坦福研究院的 David Kashtan 撰文对比了 VMS 和伯克利 Unix 在 VAX 上的基准测试,结果显示 Unix 性能存在严重问题。Joy 暂时搁置个人计划,系统性优化内核。数周内,他写出了反驳文章,证明 Kashtan 的基准测试经调优后,Unix 性能可媲美 VMS。

Joy 没有继续发布 4BSD,而是在调优系统基础上,加入 Robert Elz 的自动配置代码,于 1981 年 6 月发布 4.1BSD。在两年时间里发出约 400 份。原本计划称为 5BSD,但 AT&T 反对,担心其商用 Unix 版本 System V 与 5BSD 名称引起混淆。为解决该问题,伯克利同意未来发行版继续使用 4BSD 编号,仅递增次版本号。

4.2BSD

随着 4.1BSD 的发布,关于性能的激烈争论逐渐平息。DARPA 对首个合同成果非常满意,遂向伯克利授予一份新的两年合同,资金几乎是原合同的五倍。资金中一半投入 Unix 项目,其余分配给计算机科学系的其他研究人员。合同要求对系统进行重大改进,以便 DARPA 研究社区更好地开展工作。

基于 DARPA 社区的需求,确定了目标并开始定义系统修改内容。特别是,新系统预计包含更快的文件系统,使吞吐率达到当时磁盘技术的速度,支持多千兆字节地址空间的进程,提供灵活的进程间通信设施以便研究人员开展分布式系统研究,并集成网络支持,使运行新系统的机器能够轻松加入 ARPAnet。

为协助定义新系统,伯克利的 DARPA 合同监督员 Duane Adams 组建了一个名为“指导委员会”的团队,指导设计工作,确保满足研究社区需求。该委员会从 1981 年 4 月到 1983 年 6 月每年召开两次会议,成员包括加州大学伯克利分校的 Bob Fabry、Bill Joy 和 Sam Leffler;Bolt, Beranek 和 Newman 的 Alan Nemeth 和 Rob Gurwitz;贝尔实验室的 Dennis Ritchie;斯坦福大学的 Keith Lantz;卡内基梅隆大学的 Rick Rashid;麻省理工学院的 Bert Halstead;信息科学研究所的 Dan Lynch;DARPA 的 Duane Adams 和 Bob Baker;以及加州大学洛杉矶分校的 Jerry Popek。自 1984 年起,该会议被扩大规模的工作坊取代,参与人数大增。

1981 年 7 月,一份建议新系统所应包含功能的初稿发给指导委员会及伯克利外部人员,引发长时间讨论。1981 年夏,我加入了 CSRG,承担新文件系统的实现。夏季,Joy 主要实现进程间通信设施的原型。1981 年秋,Sam Leffler 作为全职成员加入 CSRG,与 Bill Joy 一同工作。

当 Rob Gurwitz 向伯克利发布 TCP/IP 协议早期实现后,Joy 将其集成入系统并调优性能。在此过程中,Joy 和 Leffler 意识到新系统必须支持除 DARPA 标准网络协议外的更多协议。因此,他们重新设计了软件的内部结构,完善接口,使多个网络协议能同时使用。

内部结构重组完成,TCP/IP 协议与进程间通信原型集成后,开发出几个简单应用程序为本地用户提供远程资源访问,包括 rcp、rsh、rlogin 和 rwho。这些程序原为临时工具,最终将被更合理的设施取代(因此使用“r”前缀)。该系统称为 4.1a,于 1982 年 4 月首次发布供本地使用,虽不打算广泛分发,但因各地急于等待 4.2 发布,盗版系统大量流传。

4.1a 系统在完成前已显过时,但用户反馈提供了宝贵信息,用于制定名为《4.2BSD 系统手册》的修订提案。该文档于 1982 年 2 月发布,简洁描述了 4.2BSD 将实现的用户接口。

与 4.1a 开发并行,我完成了新文件系统的实现,并于 1982 年 6 月将其完全集成入 4.1a 内核。新系统命名为 4.1b,仅运行于伯克利少数开发机器。Joy 认为系统将面临重大变更,且 4.1b 需对所有机器文件系统进行完整备份与恢复才能从 4.1a 转换,故避免本地分发。文件系统稳定后,Leffler 开始添加新文件系统相关系统调用,Joy 则着手修订进程间通信设施。

1982 年春末,Joy 宣布加盟 Sun Microsystems。夏季,他在 Sun 与伯克利之间分配时间,主要完善进程间通信设施和重组 Unix 内核源代码以隔离机器相关依赖。Joy 离开后,Leffler 接手完成项目。鉴于既定期限及承诺 1983 年春向 DARPA 发布,团队评估剩余工作并设定优先级。虚拟内存增强和进程间通信设计的最复杂部分被降为低优先级(后被搁置)。随着实现时间超过一年、Unix 社区期望升高,决定发布中间版本以缓解等待压力。该版本命名为 4.1c,于 1983 年 4 月发布,许多厂商利用此版本准备将 4.2 移植到自家硬件。Pauline Schwartz 自 4.1c 起负责发行工作。

1983 年 6 月,Bob Fabry 将 CSRG 管理权移交给 Domenico Ferrari 和 Susan Graham 教授,开始休假,摆脱此前四年高强度工作节奏。Leffler 继续完善系统,实施新的信号设施,增强网络支持,重做独立 I/O 系统简化安装流程,整合 Robert Elz 的磁盘配额功能,更新所有文档,并跟踪 4.1c 版本的缺陷。1983 年 8 月,系统作为 4.2BSD 发布。

Leffler 完成 4.2 后前往 Lucasfilm,继任者为 Mike Karels。Karels 曾参与 2.9BSD PDP-11 软件分发,经验丰富,适合新职位。1984 年 12 月我博士毕业,随后全职加入 CSRG 与 Karels 共事。

4.2BSD 的流行程度令人印象深刻;十八个月内发行超过 1000 份许可。4.2BSD 发行量超过之前所有伯克利软件发行总和。多数 Unix 厂商更愿意发布 4.2BSD 而非 AT&T 商业版 System V,原因是 System V 缺乏网络功能和伯克利快速文件系统。BSD 版本的 Unix 在商用领域占据主导仅数年,随后逐步回归其根源。随着网络功能和其他 4.2BSD 改进被整合进 System V,厂商们通常转回 System V。但后来 BSD 的发展依然持续被纳入 System V。

4.3BSD

与 4.1BSD 发布时一样,4.3BSD 也很快遭到批评。大多数抱怨是系统运行过慢。问题并不意外,主要是因为新功能尚未调优,许多内核数据结构不适合它们的新用途。Karels 和我在项目上的第一年都花在调优和完善系统上。

经过两年的调试和改进网络代码,我们在 1985 年 6 月的 Usenix 会议上宣布预计将在当年夏天晚些时候发布 4.3BSD。然而,BBN 公司的人打断了我们的发布计划。他们指出我们从未将他们网络代码的最终版本更新到 4.2BSD 中,实际上我们还在使用多年前他们交给我们的经过大量修改的最初原型。他们向 DARPA 投诉称,伯克利负责实现接口,BBN 负责实现协议,因此伯克利应该用 BBN 实现替换 4.3BSD 中的 TCP/IP 代码。

Mike Karels 获得了 BBN 代码并评估了自最初原型移交伯克利以来的工作。他决定最佳方案是将 BBN 代码中的好点子融入伯克利代码库,但不完全替换伯克利代码库。保留伯克利代码库的原因是它经过 4.2BSD 广泛分发,得到了大量测试和改进。作为妥协,他提出在 4.3BSD 中同时包含两套实现,允许用户在内核中选择使用哪一套。

DARPA 审查了 Mike Karels 的决定后认为,发布两套代码库会导致不必要的互操作性问题,应仅发布一个实现。为决定使用哪套代码库,DARPA 将两者交给弹道研究实验室的 Mike Muuse,他被伯克利和 BBN 视为独立第三方。经过一个月评估,报告称伯克利代码效率更高,但 BBN 代码对拥塞处理更好。决定性的因素是伯克利代码在所有测试中表现无误,而 BBN 代码在部分压力测试下会崩溃。DARPA 最终决定 4.3BSD 保留伯克利代码库。

精心打磨的 4.3BSD 系统最终于 1986 年 6 月发布。正如预期,它消除了许多性能上的抱怨,就像 4.1BSD 消除了对 4BSD 的抱怨一样。尽管多数厂商已开始转回 System V,但 4.3BSD 的许多部分,尤其是网络子系统,依然被纳入他们的系统。

1986 年 10 月,Keith Bostic 加入 CSRG。他被雇佣的条件之一是允许完成之前工作的收尾,即将 4.3BSD 移植到 PDP-11。尽管 Karels 和我都认为一个在 VAX 上编译需 250 KB 的系统不可能装入 PDP-11 的 64 KB 地址空间,但同意 Bostic 继续尝试。令我们惊讶的是,他成功完成了移植,利用了 PDP-11 上复杂的覆盖技术和辅助处理器状态。最终发布了由 Casey Leedom 和 Bostic 完成的 2.11BSD 版本,该版本截至 1998 年仍在少数 PDP-11 机器上使用。

与此同时,VAX 架构逐渐走向生命周期末期,开始考虑在其他机器上运行 BSD。一款当时颇有前景的新架构来自 Computer Consoles, Incorporated,名为 Power 6/32。不幸的是,该架构因公司战略转向而中止。然而,他们向 CSRG 提供了几台机器,使我们得以完成由 Bill Joy 启动的将 BSD 内核拆分为机器相关与无关部分的工作。该成果以 4.3BSD-Tahoe 形式于 1988 年 6 月发布。Tahoe 名称源自 Computer Consoles, Incorporated 给 Power 6/32 机器使用的开发代号。尽管 Power 6/32 的支持寿命较短,但这次内核拆分工作对 BSD 移植到众多其他架构极为宝贵。

Networking, Release 1

直到 4.3BSD-Tahoe 发布之前,所有 BSD 的使用者都必须先获得 AT&T 的源代码许可。这是因为伯克利从未以仅二进制形式发布 BSD 系统;发行版始终包含系统每个部分的完整源代码。Unix 系统,尤其是 BSD 系统的历史表明,向用户开放源代码具有巨大力量。用户不仅被动使用系统,还积极修复漏洞、提升性能和功能,甚至添加全新特性。

随着 AT&T 源代码许可费用的不断增加,想要基于 BSD 代码为 PC 市场构建独立的 TCP/IP 网络产品的厂商发现按二进制收费成本过高。因此,他们请求伯克利将网络代码和工具拆分出来,并以不需 AT&T 源代码许可的授权条款提供。TCP/IP 网络代码显然不存在于 32/V 系统中,完全是由伯克利及其贡献者开发的。伯克利于 1989 年 6 月发布了 BSD 起源的网络代码及支持工具,称为 Networking Release 1,这是伯克利首次发布的自由再分发代码。

授权条款十分宽松。被授权者可以修改或不修改代码,以源代码或二进制形式发布,无需向伯克利报告或支付版权费。唯一要求是保留源文件中的版权声明,并且在产品文档中注明产品包含加州大学及其贡献者的代码。虽然伯克利收取了 1000 美元的磁带费用,但任何人都可以自由从已获得许可的任何人那里复制代码。实际上,发布不久后,多个大型站点就通过匿名 ftp 提供下载。鉴于代码如此容易获取,CSRG 对数百个组织购买副本以支持进一步开发表示满意。

4.3BSD-Reno

与此同时,基础系统的开发持续进行。其接口最早在 4.2BSD 架构文档中描述的虚拟内存系统终于实现。CSRG 一贯倾向于整合现有代码,而非从头开发。因此,我们没有设计新的虚拟内存系统,而是寻找现有替代方案。首选是 Sun Microsystems 的 SunOS 中的虚拟内存系统。尽管曾讨论过 Sun 向伯克利贡献该代码,但最终未果。于是我们选用了第二方案,即整合卡内基梅隆大学开发的 MACH 操作系统的虚拟内存系统。犹他大学的 Mike Hibler 将 MACH 的核心技术与 4.2BSD 架构手册描述的用户接口(SunOS 也使用此接口)合并。

当时系统的另一个重要新增是兼容 Sun 的网络文件系统(NFS)。同样,CSRG 避免自行编写 NFS 代码,而是采用加拿大圭尔夫大学 Rick Macklem 的实现。

虽然 4.4BSD 的完整功能尚未准备好发布,CSRG 决定做一次中间版本发布,以获得对这两个重大新增功能的更多反馈和经验。这个有授权的中间版本称为 4.3BSD-Reno,于 1990 年初发布。此版本以内华达州赌城雷诺命名,含蓄提醒使用者此中间版本存在一定风险。

Networking, Release 2

在 CSRG 每周小组会议中,Keith Bostic 提出了免费再分发网络发布版的流行度问题,并询问是否有可能推出一个包含更多 BSD 代码的扩展版本。Mike Karels 和我告诉 Bostic,发布系统的大部分代码是一项庞大工程,但我们同意如果他能解决重写数百个工具和庞大 C 库的问题,我们愿意接手内核部分。私下里,Karels 和我都觉得这话题也许就此结束。

然而,Bostic 毫不气馁,开创了基于网络的大规模协作开发模式。他号召大家根据已发布的工具描述,从零开始重写 Unix 工具。参与者唯一的报酬是他们的名字会被列在伯克利贡献者名单中,与所重写工具的名字并列。起初贡献缓慢,大多是些简单工具。但随着完成工具清单的增长,Bostic 在诸如 Usenix 等公共场合持续呼吁贡献,贡献速度加快。不久,工具清单突破一百个,18 个月内几乎所有重要工具和库都被重写完成。

Bostic 怀着自豪感拿着清单来到 Mike Karels 和我办公室,问我们内核进展如何。我们心知任务艰巨,随后数月里,Karels、Bostic 和我逐文件审查整个发行版,剔除所有源自 32/V 版本的代码。最终发现仅剩 6 个内核文件受污染,且无法轻易重写。我们曾考虑重写这 6 个文件以发布完整系统,但最终决定先发布现有成果。发布前,我们向大学管理层高层申请许可,经过内部长时间争论及对专有代码识别方法的核实后,获得了发布许可。

起初我们想为第二个免费再分发版本起一个全新名字,但鉴于大学律师起草和审批新许可协议会浪费资源且延迟发布,决定沿用 Networking Release 1 的许可协议,仅做修订。因此,第二个大幅扩展的免费再分发版本于 1991 年 6 月开始发行。授权条款和费用与第一次网络发布相同,数百个人和组织支付 1000 美元费用从伯克利获取发行版。

从 Networking Release 2 到一个功能完整的系统进展迅速。发行六个月内,Bill Jolitz 编写了那 6 个缺失文件的替代品,迅速发布了基于 386 架构 PC 的完整编译和可启动系统,称为 386/BSD。Jolitz 几乎完全通过网络发布 386/BSD,他将其放在匿名 FTP 上,任何人均可免费下载,数周内获得大量追随者。

FreeBSD 团队在 NetBSD 组建数月后成立,专注于 PC 架构,目标用户群较大且技术门槛较低,类似 Linux 的路线。他们开发了复杂的安装脚本,并通过低成本 CD-ROM 发行系统。安装便捷性结合在网络和 Comdex 等大型展会的广泛宣传,使其用户快速增长。目前 FreeBSD 拥有所有基于 Release 2 衍生系统中最大的装机基数。

1990 年代中期,OpenBSD 从 NetBSD 分离出来,专注提升系统安全性,市场策略则是提高易用性和广泛普及。他们开始销售 CD-ROM,借鉴了 FreeBSD 的简易安装理念。更多信息可见 [http://www.openbsd.org](http://www.openbsd.org)

诉讼案

除了那些围绕 Networking Release 2 发行版组建的自由再分发组织外,还有一家公司,Berkeley Software Design, Incorporated(BSDI),成立以开发和发行商业支持版本的代码。(更多关于 BSDI 的信息可见 [http://www.bsdi.com](http://www.bsdi.com)和其他组织一样,他们从 Bill Jolitz 为其 386/BSD 发行版编写的六个缺失文件开始。BSDI 于 1992 年 1 月开始出售包含源码和二进制文件的系统,售价为 995 美元。他们开始投放广告,宣传其价格比 System V 源码加二进制系统低 99%。有兴趣的人被告知拨打电话 1-800-ITS-Unix。

BSDI 开展销售活动不久后,Unix System Laboratories(USL,Unix 系统实验室;AT&T 的主要子公司,负责开发和销售 Unix)寄来一封信,要求他们停止将产品宣传为 Unix,尤其是停止使用误导性的电话号码。尽管 BSDI 立即取消了该电话号并修改广告声明该产品非 Unix,但 USL 仍不满意,并提起诉讼,要求禁止 BSDI 销售其产品。诉讼称 BSDI 产品含有 USL 的专有代码和商业机密。USL 寻求禁令,阻止 BSDI 销售,声称如果发行继续,将导致其商业机密不可弥补的损失。

在禁令的初步听证会上,BSDI 辩称他们仅使用了加州大学免费分发的源码加上六个额外文件,愿意讨论六个文件的内容,但不认为自己应对加州大学发布的文件负责。法官支持 BSDI 的观点,告知 USL 必须仅针对这六个文件重述诉状,否则将驳回。意识到仅凭六个文件难以立案,USL 决定对 BSDI 和加州大学共同提起诉讼,并请求禁止加州大学继续发放 Networking Release 2 及禁止 BSDI 产品发售。

距离禁令听证仅几周,双方紧锣密鼓准备。CSRG 全体成员及几乎所有 BSDI 员工均被传讯作证。律师们来回交换诉状、反诉状及回应。Keith Bostic 和我个人撰写了数百页材料,纳入各类诉状中。

1992 年 12 月,新泽西联邦地区法官 Dickinson R. Debevoise 审理禁令请求。通常法官会立即裁决,但他决定先行评议。六周后的某个周五,他发布了 40 页意见书,驳回禁令请求,撤销除了两项投诉外的全部诉状。剩余两项投诉聚焦于近期版权和商业机密流失的可能性。他建议该案应先在州法院审理,再转至联邦法院。

加州大学接受暗示,于次周一迅速向加州州法院提起反诉,地点的选择确立了后续州法院诉讼的管辖权。宪法法律要求所有州诉讼必须在单一州进行,防止财力雄厚的诉讼方在全美五十州重复起诉对手导致拖垮对方。结果是,如果 USL 要在州法院对大学采取行动,只能在加州,而非其新泽西本州。

大学的诉讼称 USL 未能履行与大学签订的许可协议中关于 BSD 代码在 System V 中使用应给予适当归属的义务。若此指控成立,大学请求 USL 重新印制所有文档,加注适当归属,通知所有许可用户此疏忽,并在《华尔街日报》和《财富》等主要刊物刊登整版广告,告知商界此疏忽。

州法院诉讼提起不久,AT&T 将 USL 出售给了 Novell。Novell CEO Ray Noorda 公开表示更愿意在市场竞争而非法庭竞争。1993 年夏季,和解谈判开始。双方立场僵硬,谈判缓慢。在 Noorda 的推动下,多数难题被克服,1994 年 1 月达成和解。结果是,从组成 Networking Release 2 的 18000 个文件中移除三份文件,并对其他文件做了若干细微修改。此外,大学同意在约 70 个文件中增加 USL 版权声明,但这些文件继续自由再分发。

4.4BSD

新发布的版本被命名为 4.4BSD-Lite,于 1994 年 6 月发布,其许可条款与之前的 Networking 发行版完全相同。具体来说,该条款允许源码和二进制形式的自由再分发,但必须保证加州大学版权完好无损,并且当他人使用代码时必须给予加州大学适当的署名。与此同时,完整系统作为 4.4BSD-Encumbered 同步发布,该版本仍要求接收方持有 USL 源代码许可。

诉讼和解还规定 USL 不得对任何以 4.4BSD-Lite 为基础开发系统的组织提起诉讼。因此,当时所有发行 BSD 系统的组织——BSDI、NetBSD 和 FreeBSD——都必须以 4.4BSD-Lite 的源码为基础重新开始代码开发,并在其基础上合并自己的增强和改进。虽然这种重新整合导致各 BSD 系统开发短期内有所延迟,但这也是因祸得福,因为它强制所有分散的组织与自 Networking Release 2 发布后 CSRG 三年间的开发成果重新同步。

4.4BSD-Lite,第二版

来自 4.4BSD-Encumbered 和 4.4BSD-Lite 发行版的收入被用来资助一个兼职团队,负责整合漏洞修复和功能增强。该工作持续了两年,直到漏洞报告和功能增强的数量逐渐减少。最终的一批改动于 1995 年 6 月以 4.4BSD-Lite,第二版形式发布。这些改动大多数最终也被合并进其他 BSD 系统的源码库。

4.4BSD-Lite 第二版发布后,CSRG 宣告解散。在近二十年领导 BSD 项目的历程后,我们觉得是时候让拥有新思想和无限热情的其他人接手了。虽然集中管理系统开发似乎最理想,但多个组织承担不同任务的方式确保了多种方法得以尝试。由于系统以源码形式发布,最佳方案能被其他组织轻松采纳。如果某个组织表现特别出色,最终可能成为主导的系统。

如今,开源软件运动获得了越来越多关注和尊重。虽然 Linux 系统最为知名,但其捆绑的大约一半实用工具来自 BSD 发行版。Linux 发行版也高度依赖由自由软件基金会编写的编译器、调试器及其他开发工具。总体来看,CSRG、自由软件基金会和 Linux 内核开发者共同打造了开源软件运动的基础平台。我为能参与开源软件运动的开创感到自豪,并期待这一天的到来——开源成为用户和企业开发与购买软件的首选方式。

上一页FreeBSD 特色开发项目(滚动更新)下一页BSD 在 Unix 发展中的角色

最后更新于1天前

不幸的是,Jolitz 因需全职工作,无法投入足够时间维护不断涌入的修复和改进。386/BSD 发布数月后,一群热衷用户成立了 NetBSD 组织,共同维护和改进系统。NetBSD 发行版以网络分发为主,强调支持尽可能多的平台,并延续 CSRG 的研究式开发模式。直至 1998 年,NetBSD 仍仅通过网络分发,无实体介质。该组织主要面向技术深度用户。更多信息可见 *

FreeBSD 还借助 Linux 流行热潮,添加了 Linux 模拟模式,使 Linux 二进制文件能在 FreeBSD 上运行。此功能让用户既能使用日益丰富的 Linux 应用,又能享受 FreeBSD 系统的稳定、可靠和高性能。FreeBSD 团队最近建立了 FreeBSD Mall(*

http://www.netbsd.org*。
http://www.freebsdmall.com*),汇聚社区的咨询服务、衍生产品、书籍和新闻通讯。