BSD 解释
商标
FreeBSD 是 FreeBSD 基金会的注册商标。
AMD、AMD Athlon、AMD Opteron、AMD Phenom、AMD Sempron、AMD Turion、Athlon、Élan、Opteron 和 PCnet 是 Advanced Micro Devices, Inc. 的商标。
Apple、AirPort、FireWire、iMac、iPhone、iPad、Mac、Macintosh、Mac OS、Quicktime 和 TrueType 是 Apple Inc. 的商标,在美国和其他国家注册。
Git 和 Git 徽标是 Software Freedom Conservancy, Inc.(Git 项目的企业主体)在美国和/或其他国家/地区的注册商标或商标。
Linux 是 Linus Torvalds 的注册商标。
Motif、OSF/1 和 UNIX 是注册商标,IT DialTone 和 The Open Group 是 The Open Group 在美国和其他国家/地区的商标。
Sun、Sun Microsystems、Java、Java Virtual Machine、JDK、JRE、JSP、JVM、Netra、OpenJDK、Solaris、StarOffice、SunOS 和 VirtualBox 是 Sun Microsystems, Inc. 在美国和其他国家/地区的商标或注册商标。
UNIX 是 The Open Group 在美国和其他国家/地区的注册商标。
制造商和销售商用来区分其产品的许多名称被声称为商标。在本文档中出现这些名称的地方,如果 FreeBSD 项目意识到了商标声明,则这些名称后面将加上“™”或“®”符号。
目录
摘要
在开源世界中,“Linux”这个词几乎与“操作系统”同义,但它并不是唯一的开源 UNIX® 操作系统。
那么秘密是什么呢?为什么 BSD 不那么出名?本文将探讨这些问题以及其他问题。
在本文中,将以这种方式突出显示 BSD 和 Linux 之间的差异。
1. 什么是 BSD?
BSD 代表“伯克利软件发行版”。它是加利福尼亚大学伯克利分校发布的源代码发行版的名称,这些源代码最初是 AT&T 研究 UNIX® 操作系统的扩展。几个开源操作系统项目基于这个名为 4.4BSD-Lite 的源代码发行版。此外,它们还包含来自其他开源项目的许多软件包,其中最值得注意的是 GNU 项目。整个操作系统包含
BSD 内核,它负责处理进程调度、内存管理、对称多处理 (SMP)、设备驱动程序等。
C 库,系统的基本 API。
BSD C 库基于伯克利代码,而不是 GNU 项目。
诸如 shell、文件实用程序、编译器和链接器的实用程序。
一些实用程序来自 GNU 项目,而另一些则没有。
X 窗口系统,它负责处理图形显示。
大多数 BSD 版本中使用的 X 窗口系统由X.Org 项目维护。FreeBSD 允许用户从各种桌面环境中选择,例如 Gnome、KDE 或 Xfce;以及轻量级窗口管理器,例如 Openbox、Fluxbox 或 Awesome。
许多其他程序和实用程序。
2. 什么,真正的 UNIX®?
BSD 操作系统不是克隆,而是 AT&T 研究 UNIX® 操作系统的开源衍生产品,也是现代 UNIX® System V 的祖先。这可能会让你感到意外。当 AT&T 从未将代码作为开源发布时,这怎么可能呢?
确实,AT&T UNIX® 并不是开源的,从版权角度而言,BSD 绝对不是 UNIX®,但另一方面,AT&T 已经从其他项目中引入了来源,最值得注意的是加利福尼亚州伯克利市加利福尼亚大学的计算机科学研究小组 (CSRG)。从 1976 年开始,CSRG 开始发布其软件的磁带,称之为伯克利软件发行版或BSD。
最初的 BSD 版本主要包含用户程序,但当 CSRG 与国防高级研究计划局 (DARPA) 签署了一份合同,以升级其网络 ARPANET 上的通信协议时,这种情况发生了戏剧性的变化。新协议被称为互联网协议,后来被称为TCP/IP,以最重要的协议命名。第一个广泛发布的实现是 1982 年的 4.2BSD 的一部分。
在 20 世纪 80 年代,许多新的工作站公司纷纷涌现。许多公司更愿意获得 UNIX® 的许可,而不是自己开发操作系统。特别是,Sun Microsystems 获得了 UNIX® 的许可,并实现了 4.2BSD 的一个版本,他们称之为 SunOS™。当 AT&T 本身被允许将 UNIX® 商业化销售时,他们从一个简陋的实现开始,称为 System III,紧随其后的是 System V。System V 代码库不包含网络,因此所有实现都包含来自 BSD 的其他软件,包括 TCP/IP 软件,但也包括诸如csh shell 和vi 编辑器之类的实用程序。总的来说,这些增强被称为伯克利扩展。
BSD 磁带包含 AT&T 源代码,因此需要 UNIX® 源代码许可证。到 1990 年,CSRG 的资金即将耗尽,面临关闭的风险。该小组的一些成员决定发布 BSD 代码,这是开源的,不包含 AT&T 专有代码。这最终发生在网络磁带 2(通常称为Net/2)上。Net/2 不是一个完整的操作系统:大约 20% 的内核代码丢失了。CSRG 的成员之一 William F. Jolitz 编写了剩余的代码,并于 1992 年初发布了它,称为386BSD。与此同时,另一组前 CSRG 成员成立了一家名为Berkeley Software Design Inc. 的商业公司,并发布了一个名为BSD/386 的操作系统的测试版,该操作系统基于相同的来源。该操作系统的名称后来改为 BSD/OS。
386BSD 从未成为一个稳定的操作系统。相反,在 1993 年,有两个其他项目从它分离出来:NetBSD 和FreeBSD。这两个项目最初的分离是由于对等待 386BSD 改进的耐心程度不同:NetBSD 的团队在年初就开始行动,而 FreeBSD 的第一个版本直到年底才准备好。在此期间,代码库已经发生了足够的差异,以至于难以合并。此外,这两个项目的目标也不同,我们将在下面看到。1996 年,OpenBSD 从 NetBSD 分离,2003 年,DragonFlyBSD 从 FreeBSD 分离。
3. 为什么 BSD 不那么出名?
由于以下几个原因,BSD 相对来说并不出名
BSD 开发人员通常更关注代码的完善,而不是推广。
Linux 的普及在很大程度上是由于与 Linux 项目无关的因素,例如媒体以及为提供 Linux 服务而成立的公司。直到最近,开源 BSD 还没有这样的支持者。
1992 年,AT&T 起诉了BSDI(BSD/386 的供应商),指控该产品包含 AT&T 版权的代码。该案在 1994 年庭外和解,但诉讼的阴影仍然困扰着人们。2000 年 3 月,一篇发表在网络上的文章声称该诉讼案“最近已经和解”。
诉讼澄清了一项细节,那就是命名:在 20 世纪 80 年代,BSD 被称为“BSD UNIX®”。随着从 BSD 中消除最后一丝 AT&T 代码,它也失去了使用 UNIX® 这一名称的权利。因此,你将在书名中看到对“4.3BSD UNIX® 操作系统”和“4.4BSD 操作系统”的引用。
4. 比较 BSD 和 Linux
那么,比如 Debian Linux 和 FreeBSD 之间的真正区别是什么呢?对于普通用户来说,区别出奇地小:两者都是类似 UNIX® 的操作系统。两者都是由非商业项目开发的(当然,这并不适用于许多其他 Linux 发行版)。在下一节中,我们将研究 BSD 并将其与 Linux 进行比较。该描述最符合 FreeBSD,FreeBSD 估计占 BSD 安装量的 80%,但与 NetBSD、OpenBSD 和 DragonFlyBSD 的差异很小。
4.2. BSD 如何开发和更新?
BSD 内核是遵循开源开发模式开发和更新的。每个项目都维护着一个公开可访问的源代码树,其中包含该项目的全部源代码文件,包括文档和其他附带文件。用户可以获取任何版本的完整副本。
全球有大量开发者为 BSD 的改进做出贡献。他们分为三种类型
贡献者编写代码或文档。他们无权直接提交(添加代码)到源代码树。他们的代码要被纳入系统,必须经过注册开发人员(称为提交者)的审查和检查。
提交者是拥有源代码树写权限的开发人员。要成为提交者,个人必须在他们活跃的领域表现出能力。
提交者是否应该在提交对源代码树的更改之前获得授权,由他们个人决定。通常,经验丰富的提交者可以在没有达成共识的情况下进行明显正确的更改。例如,文档项目提交者可以在没有审查的情况下更正排版或语法错误。另一方面,进行范围广泛或复杂更改的开发人员应在提交更改之前提交更改以供审查。在极端情况下,具有首席架构师等职能的核心团队成员可以命令将更改从树中删除,这个过程称为回滚。所有提交者都会收到描述每个单独提交的邮件,因此不可能秘密提交。
核心团队。FreeBSD 和 NetBSD 都有一个核心团队负责管理项目。核心团队在项目的进程中发展起来,他们的职责并不总是明确定义的。成为核心团队成员并不一定要是开发者,尽管这很常见。核心团队的规则因项目而异,但总的来说,他们对项目的走向比非核心团队成员拥有更多的话语权。
这种安排在很多方面与 Linux 不同。
没有人控制系统的內容。实际上,这种差异被夸大了,因为首席架构师可以要求代码回滚,即使在 Linux 项目中,也允许几个人进行更改。
另一方面,确实存在一个中央存储库,一个可以找到整个操作系统源代码(包括所有旧版本)的单一位置。
BSD 项目维护整个“操作系统”,而不仅仅是内核。这种区别意义不大:BSD 和 Linux 都没有应用程序就无法使用。在 BSD 下使用的应用程序通常与在 Linux 下使用的应用程序相同。
由于对单一 Git 源代码树的正式维护,BSD 的开发非常清晰,可以通过版本号或日期访问系统的任何版本。Git 还允许对系统进行增量更新:例如,FreeBSD 存储库每天更新约 100 次。其中大多数更改都很小。
4.3. BSD 版本
FreeBSD、NetBSD 和 OpenBSD 以三种不同的“版本”提供系统。与 Linux 一样,版本被分配一个数字,例如 1.4.1 或 3.5。此外,版本号带有后缀,指示其用途。
系统的开发版本称为CURRENT。FreeBSD 为 CURRENT 分配一个数字,例如 FreeBSD 5.0-CURRENT。NetBSD 使用略微不同的命名方案,并追加一个单字母后缀,表示内部接口的更改,例如 NetBSD 1.4.3G。OpenBSD 不会分配数字(“OpenBSD-current”)。系统的所有新开发都进入这个分支。
定期,每年两到四次,项目会发布RELEASE版本的系统,可在 CD-ROM 上获取,也可以从 FTP 站点免费下载,例如 OpenBSD 2.6-RELEASE 或 NetBSD 1.4-RELEASE。RELEASE 版本专为最终用户设计,是系统的正常版本。NetBSD 还提供具有第三位数字的补丁版本,例如 NetBSD 1.4.2。
当在 RELEASE 版本中发现错误时,会对其进行修复,并将修复程序添加到 Git 树中。在 FreeBSD 中,生成的版本称为STABLE版本,而在 NetBSD 和 OpenBSD 中,它仍然被称为 RELEASE 版本。在 CURRENT 分支经过一段时间的测试后,也可以在此分支中添加较小的新功能。安全性和其他重要错误修复也应用于所有受支持的 RELEASE 版本。
相比之下,Linux 维护两棵独立的代码树:稳定版本和开发版本。稳定版本具有偶数次要版本号,例如 2.0、2.2 或 2.4。开发版本具有奇数次要版本号,例如 2.1、2.3 或 2.5。在每种情况下,数字后面都跟着另一个数字,表示确切的版本。此外,每个供应商都会添加他们自己的用户空间程序和实用程序,因此发行版的名称也很重要。每个发行版供应商也会为发行版分配版本号,因此完整的描述可能是“带有 2.2.14 内核的 TurboLinux 6.0”之类的内容。
4.4. 有哪些 BSD 版本可用?
与众多的 Linux 发行版相比,只有四个主要的开源 BSD。每个 BSD 项目都维护着自己的源代码树和内核。然而,在实践中,项目之间用户空间代码的差异似乎比 Linux 少得多。
很难对每个项目的目标进行分类:差异非常主观。基本上,
FreeBSD 的目标是为最终用户提供高性能和易用性,是网络内容提供商的最爱。它运行在多个平台上,并且用户数量明显超过其他项目。
NetBSD 的目标是最大限度地提高可移植性:“当然它运行 NetBSD”。它运行在从掌上电脑到大型服务器的机器上,甚至已被用于 NASA 的太空任务中。对于在旧的非英特尔®硬件上运行,它是一个特别好的选择。
OpenBSD 的目标是安全性和代码纯净度:它结合使用开源理念和严格的代码审查,创建了一个可以证明是正确的系统,使其成为安全意识强的组织(如银行、证券交易所和美国政府部门)的选择。与 NetBSD 一样,它运行在多个平台上。
DragonFlyBSD 的目标是在从单节点 UP 系统到海量集群系统的各种环境下实现高性能和可扩展性。DragonFlyBSD 有几个远期技术目标,但重点在于提供一个易于理解、维护和开发的 SMP 能力基础设施。
还有两个额外的 BSD UNIX® 操作系统不是开源的,即 BSD/OS 和 Apple 的 Mac OS® X。
BSD/OS 是 4.4BSD 派生产品中最古老的一个。它不是开源的,尽管源代码许可证以相对较低的成本提供。它在很多方面类似于 FreeBSD。在 Wind River Systems 收购 BSDi 两年后,BSD/OS 作为独立产品未能生存下来。Wind River 可能仍然提供支持和源代码,但所有新开发都集中在 VxWorks 嵌入式操作系统上。
Mac OS® X 是 Apple® Mac® 产品线操作系统的最新版本。这个操作系统的 BSD 内核,Darwin,作为针对 x86 和 PPC 计算机的完整功能开源操作系统提供。但是,Aqua/Quartz 图形系统和 Mac OS® X 的许多其他专有方面仍然是闭源的。一些 Darwin 开发人员也是 FreeBSD 提交者,反之亦然。
4.5. BSD 许可证与 GNU 公共许可证有何不同?
Linux 在GNU 通用公共许可证 (GPL) 下提供,该许可证旨在消除闭源软件。特别是,任何根据 GPL 发布的产品的衍生作品,如果被要求,也必须随附源代码。相比之下,BSD 许可证 的限制较小:允许仅二进制发行。这对于嵌入式应用特别有吸引力。
4.6. 我还需要知道什么?
由于 BSD 可用的应用程序比 Linux 少,因此 BSD 开发人员创建了一个 Linux 兼容性包,允许 Linux 程序在 BSD 下运行。该软件包包括内核修改(以正确执行 Linux 系统调用)和 Linux 兼容性文件,例如 C 库。Linux 应用程序在 Linux 机器上运行和在相同速度的 BSD 机器上运行之间的执行速度没有明显差异。
BSD 的“所有来自一个供应商”的性质意味着升级比 Linux 经常遇到的情况更容易处理。BSD 通过为早期库版本提供兼容性模块来处理库版本升级,因此可以毫无问题地运行几年前的二进制文件。
4.7. 我应该使用 BSD 还是 Linux?
这一切在实践中意味着什么?谁应该使用 BSD,谁应该使用 Linux?
这是一个很难回答的问题。以下是一些指导原则。
“如果它没有坏,就不要修它”:如果您已经使用开源操作系统,并且对它感到满意,那么可能没有充分的理由进行更改。
BSD 系统,特别是 FreeBSD,可能比 Linux 具有更高的性能。但这不是普遍现象。在很多情况下,性能几乎没有差别。在某些情况下,Linux 的性能可能比 FreeBSD 好。
总的来说,BSD 系统在可靠性方面享有更好的声誉,这主要是因为代码库更加成熟。
BSD 项目在文档的质量和完整性方面享有更好的声誉。各种文档项目旨在提供积极更新的文档,包括多种语言,涵盖系统的所有方面。
BSD 许可证可能比 GPL 更具吸引力。
BSD 可以执行大多数 Linux 二进制文件,而 Linux 无法执行 BSD 二进制文件。许多 BSD 实现也可以执行来自其他 UNIX® 类系统的二进制文件。因此,与 Linux 相比,BSD 可能提供更轻松的从其他系统迁移的途径。
4.8. 谁为 BSD 提供支持、服务和培训?
iXsystems, Inc. 为 FreeBSD 提供支持合同。
最后修改时间:2023 年 7 月 22 日,作者:Minsoo Choo