第 1 章:介绍

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 的桌面功能。它的独特优势是

  • 自由的开源许可证,它赋予您自由修改和扩展其源代码的权利,并将它集成到开源项目和封闭产品中,而不会强加版权许可证的典型限制,同时避免潜在的许可证不兼容问题。

  • 强大的 TCP/IP 网络 - FreeBSD 实施了行业标准协议,性能和可扩展性不断提高。这使得它在服务器和路由/防火墙角色中都非常适合 - 事实上,许多公司和供应商正是出于这个目的使用它。

  • 完全集成的 OpenZFS 支持,包括 root-on-ZFS、ZFS 启动环境、故障管理、管理委托、对 jail 的支持、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 的更多信息,请参阅 获取 FreeBSD

1.2.2. 谁使用 FreeBSD?

FreeBSD 以其 Web 服务功能而闻名。您可以从 FreeBSD 基金会网站上找到 基于 FreeBSD 的产品和服务的公司的评价 列表。维基百科还维护着 基于 FreeBSD 的产品的列表

1.3. 关于 FreeBSD 项目

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

1.3.1. FreeBSD 简史

FreeBSD 项目起源于 1993 年初,部分原因是 Unofficial 386BSDPatchkit 最后 3 位协调员 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 不仅支持在 CD 上分发 FreeBSD 的想法,而且还为该项目提供了一台机器和一个快速互联网连接。如果没有 Walnut Creek CDROM 对当时完全未知项目的史无前例的信任,FreeBSD 今天就不可能取得如此快的进步。

第一个 CD-ROM(和整个网络)发行版是 FreeBSD 1.0,于 1993 年 12 月发布。它基于加州大学伯克利分校的 4.3BSD-Lite ("Net/2") 磁带,许多组件也来自 386BSD 和 Free Software Foundation。对于第一个产品来说,它取得了相当不错的成功,他们在 1994 年 5 月发布了大获成功的 FreeBSD 1.1。

大约在这个时候,随着 Novell 和加州大学伯克利分校就伯克利 Net/2 磁带的法律地位达成了一项长期的诉讼,地平线上出现了一些意想不到的风暴。和解的条件是加州大学伯克利分校承认 Net/2 的三个文件是 "受限制" 的代码,必须删除,因为它们是 Novell 的财产,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(主)分支中进行,随着工作的进展,从 快照服务器 不断提供 15.0 的快照版本。

1.3.2. FreeBSD 项目目标

FreeBSD 项目的目标是提供可用于任何目的且不受任何限制的软件。我们中的许多人对代码(和项目)都有重大投入,当然不介意偶尔获得一些经济补偿,但我们绝不准备坚持这一点。我们相信,我们首要的“使命”是向任何人和所有人提供代码,无论用于何种目的,以便代码得到最广泛的应用并带来最广泛的益处。我们相信,这是自由软件最基本的目标之一,也是我们热烈支持的目标。

我们源代码树中属于 GNU 通用公共许可证 (GPL) 或库通用公共许可证 (LGPL) 的代码附带了一些限制,尽管至少在强制访问方面有所不同,而不是通常相反的情况。由于 GPL 软件在商业用途中的复杂性可能增加,因此我们确实更喜欢在合理的情况下使用更宽松的 BSD 许可证提交的软件。

1.3.3. FreeBSD 开发模式

FreeBSD 的开发是一个非常开放灵活的过程,它是由来自世界各地的数千人贡献的,正如我们的贡献者列表所示。FreeBSD 的开发基础设施允许这数千名贡献者通过互联网进行协作。我们一直在寻找新的志愿者,有兴趣更深入参与的人应该查阅有关为 FreeBSD 贡献的文章。

了解 FreeBSD 项目及其开发过程,无论是在独立工作还是紧密合作中,都很有用

Git 代码库

多年来,FreeBSD 的中央源代码树一直由CVS(并发版本系统)维护,CVS 是一款免费提供的源代码控制工具。2008 年 6 月,该项目开始使用SVN(Subversion)。由于源代码树的快速扩展和已经存储的历史记录数量,CVS 造成的技术限制变得越来越明显,因此决定进行切换。文档项目和端口集合代码库也分别在 2012 年 5 月和 2012 年 7 月从 CVS 切换到了 SVN。2020 年 12 月,该项目将源代码和文档代码库迁移到Git端口随后也迁移到 Git,时间为 2021 年 4 月。有关获取 FreeBSD src/ 代码库的更多信息,请参阅获取源代码部分,有关获取 FreeBSD 端口集合的详细信息,请参阅使用端口集合

提交者列表

提交者是指拥有 Git 代码库推送访问权限的人员,他们被授权修改 FreeBSD 源代码(“提交者”一词源于commit,即用于将新更改引入代码库的源代码控制命令)。任何人都可以向错误数据库提交错误。在提交错误报告之前,可以使用 FreeBSD 邮件列表、IRC 频道或论坛来帮助验证问题是否确实是错误。

FreeBSD 核心团队

FreeBSD 核心团队相当于 FreeBSD 项目是一家公司的话的董事会。核心团队的主要任务是确保项目作为一个整体处于良好状态并朝着正确的方向发展。邀请敬业负责的开发人员加入我们的提交者团队是核心团队的职责之一,招募新的核心团队成员也是如此,因为其他人会离开。现任核心团队是在 2024 年 5 月和 6 月从提交者候选人池中选举产生的。选举每两年举行一次。

与大多数开发人员一样,大多数核心团队成员也是 FreeBSD 开发的志愿者,他们没有从该项目中获得经济利益,因此“承诺”也不应该被误解为“保证支持”。上面提到的“董事会”类比并不十分准确,也许更合适的说法是,这些人是宁愿放弃自己的生活,也不愿明智地反对 FreeBSD!

FreeBSD 基金会

The FreeBSD 基金会 是一家位于美国的 501(c)(3) 非营利组织,致力于支持和推广全球范围内的 FreeBSD 项目和社区。该基金会通过项目赠款为软件开发提供资金,并配备人员立即响应紧急问题并实施新功能。该基金会购买硬件以改善和维护 FreeBSD 基础设施,并提供人员编制以改善测试覆盖范围、持续集成和自动化。该基金会在全球技术会议和活动上宣传 FreeBSD,从而为 FreeBSD 辩护。该基金会还提供研讨会、教育材料和演示,以招募更多 FreeBSD 用户和贡献者。该基金会还代表 FreeBSD 项目执行合同、许可协议和其他需要公认的法律实体的法律安排。

外部贡献者

最后,但绝非最不重要的一点是,最大的开发人员群体是用户本身,他们几乎始终如一地向我们提供反馈和错误修复。与 FreeBSD 基本系统开发保持联系的主要方式是订阅FreeBSD 技术讨论邮件列表,在这个列表中讨论这些问题。对于移植第三方应用程序,应该是FreeBSD 端口邮件列表。对于文档,应该是FreeBSD 文档项目邮件列表。有关各种 FreeBSD 邮件列表的更多信息,请参阅互联网上的资源

FreeBSD 贡献者列表很长,而且还在不断增长,所以为什么不为 FreeBSD 贡献一些东西来加入它呢?提供代码不是唯一的途径!

总而言之,我们的开发模式组织成一组松散的同心圆。集中化模型旨在方便 FreeBSD 的用户,他们可以轻松地跟踪一个中央代码库,而不是将潜在的贡献者拒之门外!我们的愿望是提供一个稳定的操作系统,以及用户可以轻松安装和使用的大量一致的应用程序,这种模型在实现这一点方面非常有效。

我们对那些想要加入我们成为 FreeBSD 开发人员的人的唯一要求是,他们也要对 FreeBSD 的持续成功献出与目前人员一样的奉献精神!

1.3.4. 第三方程序

除了基本发行版之外,FreeBSD 还提供了一个移植的软件集合,其中包含数千个常用的程序。端口列表从 HTTP 服务器到游戏、语言、编辑器,以及几乎所有其他东西。大约有 36000 个端口,整个端口集合大约需要 3 GB 的磁盘空间。要编译端口,只需更改到要安装的程序的目录,键入make install,剩下的让系统完成。每个端口的完整原始发行版都会动态检索,因此您只需要足够的磁盘空间来构建您想要的端口。

几乎每个端口都以预编译的“包”形式提供,那些不想从源代码编译自己的端口的人可以使用一个简单的命令(pkg install)来安装它们。有关包和端口的更多信息,请参阅安装应用程序:包和端口

1.3.5. 附加文档

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

# pkg install en-freebsd-doc

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

FreeBSD 手册

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

FreeBSD 常见问题解答

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

您始终可以在文档门户找到最新的文档。

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


最后修改日期:2024 年 7 月 4 日,作者:Li-Wen Hsu