Unix/BSD/FreeBSD 指南
FreeBSD 是一款类 Unix 的免费操作系统,源自 AT&T UNIX,通过 Berkeley 软件发行版 (BSD) 分支,经过 386BSD 和 4.4BSD 操作系统。它运行在与 Intel x86 系列兼容的处理器上,以及 DEC Alpha、Sun Microsystems 的 UltraSPARC 处理器、Itanium (IA-64)、AMD64 和 PowerPC 处理器上。它还在 PC-98 架构上运行。对 ARM 和 MIPS 架构的支持目前正在开发中。
FreeBSD 被开发为一个完整的操作系统。内核、设备驱动程序以及所有用户空间实用程序(如 shell)都存储在同一个源代码版本跟踪树 (CVS) 中。这与 Linux 形成对比,Linux 是一个类似但更知名的操作系统,其中内核由一组开发人员开发;用户空间实用程序和应用程序由其他人开发,例如 GNU 项目;所有这些都被其他组打包在一起并发布为 Linux 发行版。
作为一个操作系统,FreeBSD 通常被认为非常可靠和健壮,在准确报告远程正常运行时间的操作系统中 [1],FreeBSD 是 Netcraft 列出的 [2] 50 个正常运行时间最长的网络服务器中最常见的免费操作系统(某些版本的 Linux 等操作系统上的正常运行时间无法计算)。较长的正常运行时间也表明不需要任何内核更新,因为安装新的内核需要重新启动并重置系统的正常运行时间计数器。
FreeBSD 的最初开发始于 1993 年,从 386BSD 获取其源代码。然而,由于对 386BSD 中使用的所有源代码的合法性以及随后的 Novell(当时是 UNIX 商标的所有者)和伯克利之间的一场诉讼,FreeBSD 最终在 1995 年 1 月使用加州大学伯克利分校发布的 4.4BSD-Lite 版本重新设计了系统的大部分,发布了 FreeBSD 2.0 版本。FreeBSD 手册包含有关 FreeBSD 起源的更多历史信息。
也许 FreeBSD 2.0 最显着的进步是对原始 CMU 的 Mach 虚拟内存系统的改造,该系统针对高负载下的性能进行了优化,以及创建了端口系统,该系统使下载、构建和安装第三方软件变得非常容易。FreeBSD 为 cdrom.com(一个巨大的软件库,打破了网络上的多个吞吐量记录)、Hotmail 和 Yahoo! 等极其成功的网站提供了支持。
FreeBSD 3.0 带来了许多变化:它切换到 ELF 二进制格式,最初支持 SMP 系统,还增加了对新 64 位平台的支持:Alpha。在其时间内,3.X 分支受到严重批评,因为许多变化并没有明显的好处,并且影响了性能,但这是开发将成为非常成功的 4.X 分支的必要步骤。
最初,FreeBSD 使用 BSD Daemon 作为其徽标,但在 2005 年,举办了一场新的徽标竞赛。2005 年 10 月 8 日,竞赛结束,Anton K. Gural 的设计被选为新的 FreeBSD 徽标。BSD Daemon 将继续作为 FreeBSD 项目吉祥物。[编辑]
来自 5-STABLE 分支的最新也是最终的 FreeBSD 版本是 5.5,于 2006 年 5 月发布。FreeBSD 开发人员维护(至少)两个同时开发的分支。对于每个主要版本号都会创建 FreeBSD 的 -STABLE 分支,大约每 4-6 个月就会从该分支中剪切出版本。FreeBSD 的最新 4-STABLE 版本是 4.11,这是 4-STABLE 分支版本中的最后一个。第一个 5-STABLE 版本是 5.3(5.0 到 5.2.1 从 -CURRENT 中剪切出来)。第一个 6-STABLE 版本是 6.0。开发分支 -CURRENT 现在是 7.0-CURRENT,其中包含积极的新内核和用户空间功能。如果一个功能足够稳定和成熟,它最终会被移植回(“MFC” - 在 FreeBSD 开发者术语中从 CURRENT 合并)到 -STABLE 分支。FreeBSD 的开发模式在 Niklas Saers 的深入文章 [3] 中有描述。
FreeBSD 5 中的重大变化是底层内核锁定机制的重大变化,以支持更好的对称多处理器 (SMP) 支持,从 MP 锁中释放内核的大部分,有时被称为大巨型锁。现在,多个进程可以同时在内核模式下执行。
其他重大变化包括一个名为 KSE 的 m:n 线程解决方案,从 5.3(5-STABLE 分支的创建)开始,它现在是默认的线程 (pthreads) 库。术语 m:n,其中 m 和 n 是小的正整数,意味着 m 个用户空间线程对应于 n 个内核线程。许多其他新功能与安全相关。TrustedBSD 项目由 Robert Watson 专门为了将可信操作系统功能添加到 FreeBSD 操作系统而创建。可扩展的强制访问控制框架(TrustedBSD MAC 框架)、文件系统访问控制列表 (ACL) 以及新的 UFS2 文件系统都来自 TrustedBSD。TrustedBSD 的一些功能也被整合到 NetBSD 和 OpenBSD 操作系统中。
FreeBSD 5 还通过引入 GEOM 模块化磁盘 I/O 请求转换框架(由 Poul-Henning Kamp 贡献)显著改变了块 I/O 层。GEOM 使得轻松创建各种功能成为可能,例如镜像 (gmirror) 和加密 (gbde)。最近发布的 FreeBSD 5.4 已确认 FreeBSD 5.x 分支是一个高度稳定且性能良好的版本,尽管由于功能集庞大,它的孕育期很长。
FreeBSD 6.1 于 2006 年 5 月 8 日发布,7.0-CURRENT 正在积极开发中。这些版本继续在 SMP 和线程优化方面的工作,以及在高级 802.11 功能和 TrustedBSD 安全事件审计方面的工作。该版本的 主要发布成果包括从 VFS 中删除 Giant 锁,用更好的 1:1 线程实现替换 libthr 库,以及添加一个名为 OpenBSM 的 BSM 审计实现,该实现由 TrustedBSD 项目创建,它在很大程度上基于 Apple 开源 Darwin 中的 BSM 实现,该实现已在 BSD 样式的许可下发布。
FreeBSD 提供与几个其他类 Unix 操作系统(包括 Linux)的二进制兼容性。这背后的原因通常归因于能够运行为 Linux 开发的应用程序,通常是商业应用程序,这些应用程序只以二进制形式分发,因此如果没有控制源代码的人的意愿,就无法移植到 FreeBSD。
简单来说,它允许 FreeBSD 用户运行大多数仅以 Linux 二进制文件形式发布的应用程序。与使用 Ports Collection 可用的大量原生 FreeBSD 应用程序相比,这些应用程序只占少数。在 Linux 兼容层下使用的应用程序包括 StarOffice、Linux 版 Netscape、Adobe Acrobat、RealPlayer、VMware、Oracle、WordPerfect、Skype、Doom 3、Quake 4、虚幻竞技场系列、SeaMonkey 等等。通常,运行 Linux 二进制文件与运行原生 FreeBSD 二进制文件相比,似乎没有明显的性能损失。
虽然有很多应用程序在兼容层下运行良好,但需要注意的是,该层并不完整,因此会使某些 Linux 二进制文件无法在 FreeBSD 上使用或限制其功能,这可能是因为该兼容层只支持 Linux 内核 2.4.2 的系统调用,这是一个历史版本。一个例子是 Cedega,这是 TransGaming 的产品,用于在 Linux 上运行 Microsoft Windows 游戏。由于兼容层不完整,目前其使用受到很大限制。然而,在 FreeBSD [4] 上使用它运行游戏取得了一定成功。一个 2006 年的夏季代码项目被接受 [5],用于更新兼容层并实现缺少的系统调用。
对于大多数科学应用,Linux 兼容层执行正确;例如 nmrpipe、ccp、Mathematica 和 Matlab 等应用程序按预期执行。
与它的姊妹操作系统一样,FreeBSD 中的代码是在各种许可证条款下发布的。所有内核代码和大多数新创建的代码都以双条款 BSD 许可证发布,允许所有人根据自己的意愿使用和重新发布 FreeBSD。还有一些部分使用 GPL、LGPL、ISC、三条款 BSD 许可证和四条款 BSD 许可证。
此外,还提供用于特定功能的二进制文件,例如用于无线功能的 Atheros HAL 和用于 Adaptec 的 AAC RAID 的仅二进制工具。
一系列产品直接或间接地基于 FreeBSD。这些产品范围从嵌入式设备(例如瞻博网络路由器和诺基亚的防火墙操作系统)到其他操作系统(包括 Linux 和实时操作系统 VxWorks)的部分。苹果的 Mac OS X 的核心 Darwin 大量借鉴了 FreeBSD,包括其虚拟文件系统、网络堆栈和用户空间的组件。苹果继续从 FreeBSD 集成新代码并将其更改贡献回 FreeBSD。最初源自苹果代码库,现已成为独立实体的开源 OpenDarwin 也包含大量 FreeBSD 代码。此外,还有一些操作系统最初是从 FreeBSD 分叉或基于 FreeBSD,包括 PC-BSD 和 DesktopBSD,它们包括针对家庭用户和工作站的增强功能;FreeSBIE 和 Frenzy 实时 CD 发行版;m0n0wall 和 pfSense 嵌入式防火墙;以及 DragonFly BSD,这是一个从 FreeBSD 4.8 分叉出来的重要分支,旨在采用与 FreeBSD 5 选择的不同的多处理器同步策略,并开发一些微内核功能。