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

在本页
  • 摘要
  • 历史
  • 伯克利软件发行版(BSD)
  • System V 第四版(SVR4)
  • 自由的 Unix
  • 结语
在GitHub上编辑
导出为 PDF
  1. 2025 年

BSD 在 Unix 发展中的角色

上一页伯克利 Unix 二十年——从 AT&T 掌控到自由分发下一页FreeBSD 爱好者团结起来支持新兴项目 zVault——社区分支继 TrueNAS CORE 之后继续发展

最后更新于1天前

  • 发表于 1993 年 8 月,澳大利亚霍巴特

  • 澳大利亚计算机协会塔斯马尼亚 Unix 特别兴趣小组

  • 作者:Michael G. Brown

  • 电子邮件:

  • 所属机构:塔斯马尼亚州政府总理与内阁部

  • 澳大利亚塔斯马尼亚

摘要

伯克利软件发行版(BSD)在 Unix 操作系统的发展过程中具有深远的影响。本文回顾了伯克利所做工作的若干成果、在 System V 第四版发布背景下伯克利 Unix 所处的位置,以及在“无版权负担”的 Unix 发布之后 BSD 的未来。

历史

最初,Unix 被创造了。这让许多人感到非常高兴,并被广泛认为是个正确的决定。

——节选自道格拉斯·亚当斯的《宇宙尽头的餐厅》(轻微改动)

Unix 诞生于 1969 年,美国新泽西州默里山的贝尔电话实验室。当时,Multics 系统的开发者之一 Ken Thompson 决定创建一个良好的编程环境。Unix 最初是在一台闲置的 DEC PDP-7 上开发的,很快就引起了人们的兴趣,Dennis Ritchie 随后加入了 Thompson 的工作,并将操作系统移植到了更新的 DEC PDP-11 上。

为了顺利过渡到 PDP-11,这次移植重写了操作系统的大部分代码,使用的是 Ritchie 的新语言——C 语言。向 C 语言的迁移被认为是使这个新操作系统取得成功的关键步骤之一。

当时的惯例是为特定处理器架构专门开发操作系统,并且为了最大限度发挥硬件性能,往往要用汇编语言编写大量代码。而 C 语言的不同之处在于,它作为高级语言,不仅足够强大,能够实现高级数据结构和逻辑抽象,又足够底层,可以直接访问硬件资源。而且它本身足够简单,编译器也容易移植到新架构上。Unix 的 C 实现只保留了约 3% 的汇编代码,其余都用 C 实现,并提供了对应的桩函数(stub routines)。

Unix 在贝尔实验室以“研究版本”(Research Edition)的形式持续开发,到 1976 年中期,已经发展到第六版。此时 AT&T 开始以极低成本向研究机构提供操作系统源代码。这一举措使这些机构可以自由修改 Unix 内核,添加新功能或调整已有功能。

1978 年,AT&T 发布了第七版 Unix,并将其移植到了 DEC VAX 系统上,这个版本被称为 32V。这是贝尔实验室发布的最后一批研究版本。从这时起,Unix 分裂为三条主要的发展路线。

随着第七版的发布,研究组将分发工作移交给 AT&T 新成立的 Unix 支持小组(Unix Support Group),后者逐渐演变为今天的 Unix System Laboratories(USL,Unix 系统实验室),即当前 Unix 操作系统的所有者。同时,第七版发布后,加州大学伯克利分校也开始正式投入 Unix 的开发。伯克利在第六版 Unix 上早已有部分工作成果,这些成果后来被整合进 1978 年底发布的 3BSD 中。

第三条 Unix 的发展路线则仍然留在贝尔实验室,继续推动 Research Unix 的演化。从那以后,Unix 的主要版本发布主要来自 USL(及其前身)与伯克利两方。自 System III 起,USL 也将部分来自伯克利的改进整合进其主流产品中,最终在 System V Release 4 中达到顶峰 —— 该版本旨在将 BSD 与 USL 的 Unix 融合为一个统一的标准操作系统。

伯克利软件发行版(BSD)

“从托尔斯泰到奇妙仙子,从伯克利走到卡梅尔。”

——Paul Simon《Cloudy》中的歌词

1978 至 1979 年间,加州大学伯克利分校开始了对 Unix 操作系统的研究。全球许多高校研究人员都利用了 AT&T 的慷慨政策 —— 几乎零成本即可获得 Unix 源代码(早期的源码许可证费用约为 100 美元)。

伯克利的最初成果是为 PDP-11 平台开发的 1BSD 与 2BSD。由于 PDP-11 的内存极为有限,早期的工作受到限制,但内核中做出了一些小规模的效率改进,并加入了一些新程序,其中包括 Bill Joy 编写的、后来广为流传的可视化文本编辑器 vi(出现在 2BSD 中)。

早期伯克利的开发工作以技术推动为主,研究者需要开发运行在大内存系统上的软件,例如伯克利的 LISP 实现。第七版 Unix 移植至 VAX(即 32V)为伯克利研究者提供了理想的平台 —— VAX 提供了比 PDP-11 更强大的虚拟内存系统,而后者则采用受限的分段结构。

1978 年,Bill Joy 与 Ozalp Babaoglu 启动了 3BSD 的开发,目标是在传统进程换出机制(process swapping)之外,引入虚拟内存、页替换和按需分页机制。直到 1984 年发布的 SVR2 中,这些特性才出现在 USL 的商业产品中。

3BSD 的成功引起了美国国防高级研究计划署(DARPA)的注意,后者资助伯克利继续开发,以期为军方承包商提供一套先进的、标准化的 Unix 系统。DARPA 的项目由一个学术界与工业界联合组成的委员会监督,因此诞生了一套在研究与实际需求之间取得平衡的 Unix 实现。借助 DARPA 的资助,伯克利相继推出多个 4BSD 版本 —— 主版本号为偶数的(如 4.0、4.2、4.4)表示功能重大更新,而奇数版(如 4.1、4.3)则主要是修复与性能优化版本。

4.0BSD 于 1979 年末发布,主要目标是重新设计并实现虚拟内存系统、标准终端与屏幕处理机制、以及支持大量设备驱动程序。其中的屏幕处理机制看似不重要,但在 DARPA 资助背景下却极其关键 —— 承包商面向多样化用户环境开发软件,只有伯克利提供的 termcap(5) 屏幕处理系统可以避免高昂的现场定制成本。

如前所述,BSD 在虚拟内存的引入方面领先 USL 约五年。虽然 SVR2 最终实现的 VM 系统并非源自伯克利,但其功能也包含了共享内存与信号量。USL 还从伯克利的 termcap 得到启发,设计了功能类似但不兼容的 terminfo 包。

1980 年底发布的 4.1BSD 虽以维护性更新为主,却引入了作业控制(job control)、运行时自动配置系统(autoconfiguration)以及支持更长符号名的目标文件符号表。自动配置功能最终成为 SVR4 中可动态加载设备驱动的雏形。

伯克利的自动配置机制为内核中配置的每个设备调用探测函数(probe routine),若检测结果确认设备存在,内核就会配置设备、分配所需缓冲区、建立中断向量等;反之,则不分配系统资源。这使得同一个内核可运行于多种硬件平台,大大减少了对硬件架构的具体了解需求。

4.2BSD 于 1984 年 2 月发布,引入了可靠信号处理、网络支持、进程间通信机制,以及伯克利快速文件系统(Fast File System,FFS)。该版本的网络实现成为 DARPA Internet 网络架构的参考模型,伯克利实现的 TCP/IP 协议栈至今仍是互联网通信的核心标准。

快速文件系统不仅极大提升了基于磁盘的文件操作性能,还支持长文件名、最大 2GB 文件大小、多个用户组成员资格等功能。4.2BSD 的信号机制后来成为 IEEE 1003.1 POSIX 标准的参考实现。多个组成员与 BSD 信号处理机制也被 POSIX 委员会采纳。4.2BSD 引入的 socket 模型也成为进程通信与网络通信的事实标准,广泛流传至今。包括 Sun Microsystems 的 SunOS(直至 4.1.3 版本)在内的许多商业 Unix 系统都是基于 4.2BSD。

4.3BSD 于 1987 年发布,主要是为了解决 4.2BSD 中的问题。此后,4.3BSD 成为伯克利的标准发行版,并衍生出三个小版本:4.3BSD-Tahoe、4.3BSD-Reno 与 4.3BSD-Net/2。最初的 4.3 版本修复了许多问题,尤其是网络部分 —— 4.2BSD 发布时许多网络标准尚未确定,开发者做出了一些后来的实践证明并不成立的假设。

后续版本加入了对 Computer Console Inc. 处理器的支持,以及其他一些小修复。Reno 版本则对文件系统布局做出重大改动,这些变动使得 BSD 与 SVR4 的顶层目录结构几乎一致。Net/2 版本则重新实现了 Sun Microsystems 的网络文件系统(NFS)并加入对 OSI 网络的支持。

System V 第四版(SVR4)

System V Release 4(SVR4)由 USL 于 1989 年发布,是 USL 与 Sun Microsystems 联合开发的成果。SVR4 的发布意在终结长期以来 USL 支持者与 BSD 拥趸之间的“宗教战争”。在 SVR4 发布之前,大多数主流 Unix 厂商都以 BSD 或 System V 之一为基础构建自家产品。这两大系统之间的差异显著,以致于源于其中一方的软件往往无法在另一方系统上直接编译,需作一定修改。

SVR4 的总体策略似乎是为用户提供环境选择。如果用户偏好伯克利风格,只需将 /usr/ucb 放在路径中 /usr/bin 之前,系统行为就会类似传统 BSD。反之,偏好 System V 风格的用户可以将 /usr/bin 放在 /usr/ucb 前,以获得他们熟悉的 System V 环境。

SVR4 与 BSD 的最大区别主要体现在系统管理员的体验上。大多数 BSD 管理任务只需编辑文本文件并向守护进程发送信号;而 System V 的传统则要求使用某种管理 shell 或者在 shell 中输入繁复的多参数命令。对普通用户而言,从 BSD 转向 SVR4 不会有太大变化,但系统管理员将面临显著差异。

如今,大多数 Unix 厂商已承诺支持 SVR4。许多人认为 BSD 系的 Unix 不再有未来。从某种意义上讲,这是事实 —— 想要在商业 Unix 世界中竞争的厂商必须支持 SVR4。然而,对普通用户而言,SVR4 仍是一项昂贵的选择:一份无限用户数的 SVR4 许可证价格不少于 2,000 美元,加上支持和升级费用,其软件成本可能超过运行它的硬件。SVR4 通常被视为面向商业的、正规化的操作系统,而 BSD 传统上则面向学术用户与“黑客”。

对于运行商业软件(如数据库服务器)并要求高可用性的组织而言,SVR4 是必然选择。然而,组织中还有许多任务并不需要如此昂贵的系统 —— 例如传统由 BSD 系统处理的邮件服务、新闻服务,或低成本的 X 终端系统等场景。BSD 的救星,可能正是自由 Unix 的兴起。

自由的 Unix

1991 年 12 月和 1992 年 2 月,Unix 世界发生了可能具有革命性影响的两件大事:两个完全自由可再分发的 Unix 系统相继发布。

第一个是 Linux,由芬兰赫尔辛基大学学生 Linus Torvalds 从零开始开发。最初只是模仿 System V Release 2 的简单任务切换器,Linux 很快发展成一款支持网络和 X Window 的完整操作系统。

第二个来自 William Jolitz,他宣布将 4.3BSD-Net/2 移植到 Intel 386 平台,提供完整无版权限制的源代码。Jolitz 曾为伯克利开发并贡献了 BSD 的 386 实现,并被包含进 Net/2。然而,Net/2 中仍含有一些 USL 的专有代码,因此不能完整再分发,除非拥有 USL 的源代码许可证。Jolitz 的做法是:取出 Net/2 中无版权负担的部分,再加入足够组件,构建出一个独立操作系统 —— 并免费提供。

发布后的反响热烈。虽然首个版本(386BSD 0.0)极不稳定,但不久后便推出了改进版 386BSD 0.1。该软件易于获取,源代码开放,很快吸引了大量用户社群开始改进。386BSD 基于 BSD Net/2,内建网络支持、快速文件系统(FFS)和 NFS,绝大多数公开软件都能轻松移植 —— X Window 几乎在发布初期就已可用。

386BSD 发布后,出现了多个分支项目,各自目标不同:

  • William Jolitz 继续开发 386BSD 0.2,作为研究性版本,计划引入动态共享库、可动态加载设备驱动等功能;

  • FreeBSD 项目则以打造稳定产品为目标,整合最新编译器与应用程序,通过网络和光盘提供易于安装的发行版;

  • NetBSD 项目则定位在研究与稳定之间,致力于协作开发,并通过网络提供频繁快照更新。

除了这些专注 Intel 平台的项目外,还有多个团队致力于向其他平台移植,如 Motorola 68000、SPARC 以及 HP-900 系列机器。

结语

伯克利大学的计算机系统研究小组(CSRG)已宣布,4.4BSD 将是该校最后一次发行 BSD。其主要原因之一是缺乏企业资助 —— 绝大多数 Unix 厂商如今已拥有自家完善的研发团队。

随着 Unix 厂商全面转向商业化,System V Release 4 已成为 1990 年代的标准 Unix 实现。未来,大型厂商不太可能再回头支持 BSD。然而,像 Sun Microsystems 这类长期支持 BSD 的公司,在推动用户迁移至 SVR4 时仍面临一定阻力。事实上,Sun 当前的 BSD 系统(4.1.3)比其 SVR4 系统更稳定,因此 Sun 很可能在一段时间内仍继续支持其 BSD 系列。

但由于 BSD 的自由再分发实现仍在持续发展,伯克利的传统仍将在 Unix 社区中延续。源代码可得的操作系统保证了操作系统设计的学生能够继续学习与改进 BSD。这样一个功能完备、自由且由社区支持的系统,在普通硬件上运行良好,几乎可以确保 BSD Unix 在非关键任务场景中 —— 如邮件与新闻服务、低成本 X 支持、打印服务等 —— 将继续发挥重要作用。可以肯定地说,我们还没有听到 Berkeley Software Distributions 的最后消息。

M.Brown@dpac.tas.gov.au