第 1 章 引言

如果发现翻译错误,请直接 发起PR修改

1.1. 简介

感谢你对 FreeBSD 有所兴趣! 下面这一章涉及到了 FreeBSD 项目的各个方面,例如它的历史、目标、开发模式等等。

阅读本章后,您将了解:

  • FreeBSD 与其他计算机操作系统的关系。

  • FreeBSD 项目的历史。

  • FreeBSD 项目的目标。

  • FreeBSD 开源开发模型的基础知识。

  • 当然,还有一个问题: FreeBSD 这个名字的由来。

1.2. 欢迎来到 FreeBSD !

FreeBSD 是一个开源的、符合标准的类 Unix 操作系统,适用于 x86(32 位和 64 位)、ARM、AArch64、RISC-V、POWER 和 PowerPC 计算机。它提供了现在被视为理所当然的所有功能,如抢占式多任务处理、内存保护、虚拟内存、多用户设施、 SMP 支持、各种语言和框架的开源开发工具,以及以 X Window System、KDE 或 GNOME 为中心的桌面功能。它的特点有:

  • 自由开源许可证( Liberal Open Source license ) 赋予您自由修改和扩展其源代码的权利,并将其纳入开源项目和闭源产品中,而不会施加典型的强制共享许可证所具有的限制,同时避免潜在的许可证不兼容问题。

  • 强大的 TCP/IP 网络 - FreeBSD 采用行业标准协议,具有越来越高的性能和可扩展性。这使得它在服务器和路由 / 防火墙角色中都能很好地匹配 - 实际上,许多公司和供应商正是出于这个目的使用它。

  • 完全集成的 OpenZFS 支持,包括 root-on-ZFS 、 ZFS 引导环境、故障管理、管理委派、支持 jails 、 FreeBSD 特定文档和系统安装程序支持。

  • 广泛的安全功能,从强制访问控制框架到 Capsicum 能力和沙盒机制。

  • 超过30 , 000 个预构建软件包 支持所有架构,以及 Ports Collection ,使得构建自己定制的软件包变得容易。

  • 文档 - 除了手册和涵盖从系统管理到内核内部的各种主题的不同作者的书籍之外,还有 man(1) 页面,不仅适用于用户空间的守护进程、实用程序和配置文件,还适用于内核驱动程序 API (第 9 节)和单个驱动程序(第 4 节)。

  • 简单而一致的存储库结构和构建系统 - FreeBSD 使用一个存储库来管理所有组件,包括内核和用户空间。这个特点,加上统一且易于定制的构建系统以及经过深思熟虑的开发流程,使得将 FreeBSD 与自己产品的构建基础设施集成变得容易。

  • 秉承 Unix 哲学,更倾向于可组合性,而不是硬编码行为的单体化“一体化”守护程序。

  • 与 Linux 的二进制兼容性,使得在不需要虚拟化的情况下可以运行许多 Linux 二进制文件。

FreeBSD 基于加利福尼亚大学伯克利分校计算机系统研究组( CSRG )的 4.4BSD-Lite 发布版,并延续了 BSD 系统开发的卓越传统。除了 CSRG 提供的出色工作外, FreeBSD 项目还投入了数千小时的工作,扩展了功能并对系统进行了精细调整,以在实际负载情况下实现最大性能和可靠性。 FreeBSD 提供与其他开源和商业产品相当的性能和可靠性,同时结合了其他地方无法获得的尖端功能。

1.2.1. FreeBSD 可以做什么?

FreeBSD 的应用范围几乎只受你的想象力限制。从软件开发到工厂自动化,从库存控制到远程卫星天线的方位校正;如果可以用商业 UNIX® 产品完成,那么很有可能你也可以用 FreeBSD 来实现! FreeBSD 还受益于全球研究中心和大学开发的成千上万个高质量应用程序,通常可以以很低的或者零成本获得。

由于 FreeBSD 本身的源代码是免费提供的,因此该系统可以根据特定应用或项目的需求进行几乎无与伦比的定制,而这在大多数主要商业供应商的操作系统中通常是不可能的。以下是一些人们目前正在使用 FreeBSD 的应用程序的示例:

  • 互联网服务:FreeBSD 内置的强大的 TCP/IP 网络使其成为各种互联网服务的理想平台,例如:

    • Web 服务器

    • IPv4 和 IPv6 路由

    • 防火墙和 NAT ("IP 伪装")网关

    • FTP 服务器

    • 电子邮件服务器

    • 存储服务器

    • 虚拟化服务器

    • 还有更多 …​

  • 教育: 你是计算机科学或相关工程领域的学生吗?没有比 FreeBSD 提供的亲身实践、深入了解操作系统、计算机架构和网络更好的学习方式了。还有一些免费的 CAD 、数学和图形设计软件包,对于那些主要关注计算机用于完成其他工作的人来说,它们也非常有用!

  • 研究: 由于整个系统的源代码可用, FreeBSD 是操作系统以及计算机科学其他领域研究的优秀平台。 FreeBSD 的自由可用性也使得远程团队能够在想法或共享开发上进行合作,而无需担心特殊许可协议或在公开论坛上讨论的限制。

  • 网络: 需要一个新的路由器吗?一个域名服务器( DNS )?一个防火墙来阻止人们进入您的内部网络? FreeBSD 可以轻松地将闲置在角落的个人电脑转变为具有复杂数据包过滤功能的高级路由器。

  • 嵌入式: FreeBSD 是构建嵌入式系统的优秀平台。它支持 ARM 、 AArch64 和 PowerPC 平台,配备强大的网络堆栈、尖端功能和宽松的 BSD 许可证,使 FreeBSD 成为构建嵌入式路由器、防火墙和其他设备的理想基础。

  • 桌面: FreeBSD 是一个使用免费的 X11 服务器和 Wayland 显示服务器的廉价桌面解决方案的不错选择。 FreeBSD 提供了许多开源桌面环境的选择,包括标准的 GNOME 和 KDE 图形用户界面。 FreeBSD 甚至可以从中央服务器“无盘启动”,使得个人工作站更加便宜和易于管理。

  • 软件开发: 基本的 FreeBSD 系统配备了一套完整的开发工具,包括完整的 C/C ++编译器和调试器套件。通过端口和软件包集合,还可以支持许多其他编程语言。

FreeBSD 可以免费下载,也可以通过 CD-ROM 或 DVD 获取。有关获取 FreeBSD 的更多信息,请参阅 Obtaining FreeBSD

1.2.2. 谁使用 FreeBSD ?

FreeBSD 以其 Web 服务器功能而闻名。可以在 FreeBSD 基金会的网站上找到一份 基于 FreeBSD 的产品和服务的公司的 testimonials 列表 。维基百科还维护着一个 基于 FreeBSD 的产品列表

1.3. 关于 FreeBSD 项目

下面的部分提供了关于项目的一些背景信息,包括简要历史、项目目标以及项目 开发模型

1.3.1. FreeBSD 的简要历史

FreeBSD 项目诞生于 1993 年初,部分是由非官方的 386BSDPatchkit 的最后三位协调员 Nate Williams 、 Rod Grimes 和 Jordan Hubbard 共同构思而成。

最初的目标是生成 386BSD 的中间快照,以解决一些无法通过补丁机制解决的问题。该项目的早期工作标题是 386BSD 0.5 或 386BSD Interim ,以此为参考。

386BSD 是 Bill Jolitz 的操作系统,到那时为止,它已经遭受了将近一年的严重忽视。随着每一天过去,补丁包变得越来越不舒服,他们决定通过提供这个临时的“清理”快照来帮助 Bill 。然而,当 Bill Jolitz 突然决定撤回对该项目的支持,并没有明确表示将采取什么替代措施时,这些计划被粗暴地中止了。

即使没有 Bill 的支持,三人组仍然认为目标仍然值得追求,因此他们采用了 David Greenman 提出的“ FreeBSD ”这个名字。在与系统当前用户咨询后,确定了最初的目标。一旦清楚该项目可能成为现实, Jordan 便联系了 Walnut Creek CDROM ,以改善 FreeBSD 的发行渠道,以便那些没有便捷访问互联网的人。 Walnut Creek CDROM 不仅支持在光盘上分发 FreeBSD ,还提供了一台用于开发工作的机器和快速的互联网连接。如果没有 Walnut Creek CDROM 对当时一个完全未知的项目的几乎前所未有的信任, FreeBSD 很可能不会像今天这样迅速取得如此大的进展。

第一张 CD-ROM (以及整个网络范围内的)发行版是 FreeBSD 1.0 ,于 1993 年 12 月发布。它基于来自加州大学伯克利分校的 4.3BSD-Lite (“Net/2”)磁带,同时还借鉴了 386BSD 和自由软件基金会提供的许多组件。作为首次发布,它取得了相当不错的成功,并在 1994 年 5 月发布了备受好评的 FreeBSD 1.1 版本。

在这个时候,Novell 和加州大学伯克利分校( U.C. Berkeley )就有关伯克利 Net/2 磁带的法律地位的长期诉讼达成了意外的和解。和解的条件是 U.C. Berkeley 承认 Net/2 的三个文件是“受限制”的代码,必须予以删除,因为它们是诺维尔的财产,而 Novell 则是之前从 AT&T 收购的。作为回报,伯克利获得了 Novell 的“祝福”,即当 4.4BSD-Lite 版本最终发布时,将被宣布为无限制的,并强烈鼓励所有现有的 Net/2 用户切换过来。这包括 FreeBSD ,该项目被给予截止到 1994 年 7 月底停止发布基于 Net/2 的产品的时间。根据协议的条款,该项目在最后期限之前被允许发布最后一个版本,即 FreeBSD 1.1.5.1 。

FreeBSD 随后开始了一项艰巨的任务,从一个全新且相当不完整的 4.4BSD-Lite 代码库中重新塑造自己。虽然只有与 System V 共享内存和信号量相关的三个文件被删除,但在 BSD 发行版中进行了许多其他的更改和错误修复,因此将所有 FreeBSD 的开发工作合并到 4.4BSD-Lite 中是一项巨大的任务。该项目直到 1994 年 11 月才完成了这一过渡,并在 12 月向世界发布了 FreeBSD 2.0 版本。尽管在某种程度上仍然存在一些问题,但这个版本取得了重大的成功,并在 1995 年 6 月发布了更稳定、更易安装的 FreeBSD 2.0.5 版本。

从那时起,FreeBSD 发布了一系列版本,每次都会在前一版本的稳定性、速度和功能集上进行改进。

目前,长期发展项目仍在15.0-CURRENT (main) 分支中进行,并且随着工作的进行,15.0 的快照版本将持续从 快照服务器 发布。

1.3.2. FreeBSD 项目的目标

FreeBSD 项目的目标是提供可用于任何目的且无附加条件的软件。我们中的许多人在代码(和项目)上投入了大量资源,偶尔获得一些财务补偿并不介意,但我们绝对不会坚持要求。我们相信我们的首要任务是向任何人提供代码,无论出于何种目的,以便代码得到最广泛的使用并提供最广泛的利益。我们认为这是自由软件的最基本目标之一,我们对此表示热情支持。

我们源代码树中受 GNU 通用公共许可证( GPL )或库通用公共许可证( LGPL )约束的代码,附带了稍微更多的限制,尽管至少是在强制访问方面,而不是通常的相反情况。由于商业使用 GPL 软件可能出现的额外复杂性,我们更喜欢在合理的情况下选择以更宽松的 BSD 许可证提交的软件。

1.3.3. FreeBSD 开发模型

FreeBSD 的开发是一个非常开放和灵活的过程,从世界各地成千上万的人的贡献中构建而成,这一点可以从我们的 贡献者列表 中看出来。 FreeBSD 的开发基础设施允许这些成千上万的贡献者在互联网上进行合作。我们一直在寻找新的志愿者,有兴趣更深入参与的人应该参考有关 贡献 FreeBSD 的文章。

无论是独立工作还是密切合作,以下是关于 FreeBSD 项目及其开发过程的一些有用信息:

Git 仓库

多年来, FreeBSD 的中央源代码树由免费可用的源代码控制工具 CVS ( Concurrent Versions System )维护。 2008 年 6 月,该项目转而使用 SVN ( Subversion )。由于源代码树的迅速扩展和已存储的历史记录量, CVS 所施加的技术限制变得明显,因此这次转换被认为是必要的。文档项目和 Ports 集合存储库也分别于 2012 年 5 月和 2012 年 7 月从 CVS 迁移到了 SVN 。 2020 年 12 月,该项目将源代码和文档存储库迁移到了 Git ,而 Ports 集合则在 2021 年 4 月跟随。有关获取 FreeBSD src/ 存储库的更多信息,请参阅 Obtaining the Source 部分,有关获取 FreeBSD Ports 集合的详细信息,请参阅 Using the Ports Collection

贡献者列表

committers 是那些具有对 Git 仓库的 push 访问权限的人,他们被授权对 FreeBSD 源代码进行修改(术语“committer”来自于 commit ,这是用于将新更改引入仓库的源代码控制命令)。任何人都可以提交一个 bug 到 Bug Database 。在提交 bug 报告之前,可以使用 FreeBSD 邮件列表、 IRC 频道或论坛来帮助验证一个问题是否真的是一个 bug 。

FreeBSD 核心团队

如果 FreeBSD 项目是一家公司,那么 FreeBSD 核心团队 将相当于董事会。核心团队的主要任务是确保整个项目处于良好状态并朝着正确的方向发展。邀请专注和负责任的开发人员加入我们的提交者团队是核心团队的职责之一,招募新的核心团队成员也是核心团队的职责之一。当前的核心团队是在 2022 年 5 月从提交者候选人中选举产生的。选举每 2 年举行一次。

和大多数开发者一样, FreeBSD 核心团队的大多数成员在 FreeBSD 开发方面也是志愿者,并且没有从项目中获得经济利益,所以“承诺”也不应被误解为“有保证的支持”。上面提到的“董事会”类比并不十分准确,更适合说这些人是在违背自己更好判断的情况下选择了 FreeBSD 而放弃了自己的生活!

FreeBSD 基金会

FreeBSD 基金会 是一个位于美国的 501(c)(3) 非营利组织,致力于支持和推广全球的 FreeBSD 项目和社区。基金会通过项目拨款资助软件开发,并提供员工立即响应紧急问题并实施新的特性和功能。基金会购买硬件以改善和维护 FreeBSD 基础设施,并资助人员提高测试覆盖率、持续集成和自动化。基金会通过在世界各地的技术会议和活动上推广 FreeBSD 来支持 FreeBSD 。基金会还提供研讨会、教育材料和演示,以吸引更多的 FreeBSD 用户和贡献者。基金会还代表 FreeBSD 项目执行合同、许可协议和其他需要认可法律实体的法律安排。

外部贡献者

最后,但绝对不是最不重要的,最大的开发者群体是用户自己,他们几乎一直向我们提供反馈和错误修复。与 FreeBSD 基本系统的开发保持联系的主要方式是订阅 FreeBSD technical discussions mailing list ,在这里讨论这些事情。对于移植第三方应用程序,可以使用 FreeBSD ports mailing list 。对于文档,可以使用 FreeBSD documentation project mailing list 。有关各种 FreeBSD 邮件列表的更多信息,请参见 互联网资源

The FreeBSD 贡献者列表 是一个长期而不断增长的列表,为什么不通过 为 FreeBSD 做出贡献 加入其中呢?提供代码并不是唯一的方式!

总之,我们的开发模型是以一组松散的同心圆组织起来的。中心化模型是为了方便 FreeBSD 的用户,他们可以通过追踪一个中央代码库来获得便利,而不是为了排斥潜在的贡献者!我们的愿望是提供一个稳定的操作系统,配备一套大量的一致的应用程序,用户可以轻松安装和使用 - 这个模型在实现这一目标方面非常成功。

我们对那些希望加入我们成为 FreeBSD 开发者的人只有一个要求,那就是拥有与现有成员一样对其持续成功的奉献精神!

1.3.4. 第三方程序

除了基本发行版之外, FreeBSD 还提供了一个可移植软件集合,其中包含数千个常见的程序。ports 列表涵盖了从 HTTP 服务器到游戏、编程语言、编辑器等几乎所有领域的程序。大约有 36000 个 ports;整个 Ports 集合需要大约 3 GB 的空间。要编译一个 ports,只需切换到您想要安装的程序的目录,输入 make install,然后让系统完成剩下的工作。每个构建的 ports 都会动态地检索完整的原始发行版,因此您只需要足够的磁盘空间来构建所需的 ports。

几乎每个 ports 也都提供了预编译的“软件包”,不希望从源代码编译自己的 ports 的用户可以使用简单的命令( pkg install )进行安装。有关软件包和 ports 的更多信息,请参阅 安装应用程序:软件包和 ports

1.3.5. 附加文档

所有支持的 FreeBSD 版本在安装程序中提供了一个选项,在初始系统设置期间可以安装附加文档到 /usr/local/share/doc/freebsd。文档也可以在之后使用软件包进行安装:

# pkg install en-freebsd-doc

对于本地化版本,请将“en”替换为所选语言的语言前缀。请注意,一些本地化版本可能已过时,可能包含不再正确或相关的信息。您可以使用以下 URL 在 Web 浏览器中查看本地安装的手册:

FreeBSD 手册

/usr/local/share/doc/freebsd/en/books/handbook/handbook_en.pdf

FreeBSD 常见问题解答

/usr/local/share/doc/freebsd/en/books/faq/faq_en.pdf

您可以随时在 文档门户 找到最新的文档。

所有商标均为其各自所有者的财产。


上次修改时间: September 18, 2024 by fiercex