第 1 章 介绍
1.1. 概述
非常感谢您对 FreeBSD 感兴趣!下面的章节涵盖了 FreeBSD 项目的各个方面,比如它的历史、目标、开发模式,等等。
阅读完这章,您将了解:
FreeBSD 与其它计算机操作系统的关系。
FreeBSD 项目的历史。
FreeBSD 项目的目标。
FreeBSD 开放源代码开发模式的基础。
当然还有:“FreeBSD” 这个名称的由来。
1.2. 欢迎来到 FreeBSD 的世界!
FreeBSD 是一个支持Intel (x86 和 Itanium®),AMD64, SunUltraSPARC® 计算机的基于 4.4BSD-Lite 的操作系统。到其他体系结构的移植也在进行中。您也可以阅读 FreeBSD 的历史,或者最新的发行版本。如果您有意捐助(代码,硬件,基金),请看为 FreeBSD 提供帮助这篇文章。
1.2.1. FreeBSD 能做些什么?
FreeBSD 有许多非凡的特性。其中一些是:
抢占式多任务与动态优先级调整确保在应用程序和用户之间平滑公正的分享计算机资源,即使工作在最大的负载之下。
多用户设备使得许多用户能够同时使用同一 FreeBSD 系统做各种事情。 比如, 像打印机和磁带驱动器这样的系统外设,可以完全地在系统或者网络上的所有用户之间共享,可以对用户或者用户组进行个别的资源限制,以保护临界系统资源不被滥用。
符合业界标准的强大 TCP/IP 网络 支持,例如 SCTP、 DHCP、 NFS、 NIS、 PPP, SLIP, IPsec 以及 IPv6。 这意味着您的 FreeBSD 主机可以很容易地和其他系统互联,也可以作为企业的服务器,提供重要的功能,比如 NFS(远程文件访问)以及 email 服务, 或将您的组织接入 Internet 并提供 WWW,FTP,路由和防火墙(安全)服务。
内存保护确保应用程序(或者用户)不会相互干扰。 一个应用程序崩溃不会以任何方式影响其他程序。
FreeBSD 是一个 32 位操作系统 (在 Itanium®,AMD64,和 UltraSPARC® 上是64 位),并且从开始就是如此设计的。
业界标准的 X Window 系统 (X11R7)为便宜的常见 VGA 显示卡和监视器提供了一个图形化的用户界面(GUI),并且完全开放代码。
和许多 Linux,SCO,SVR4,BSDI 和 NetBSD 程序的二进制代码兼容性
数以千计的 ready-to-run 应用程序可以从 FreeBSD ports 和 packages 套件中找到。 您可以顺利地从这里找到,何须搜索网络?
可以在 Internet 上找到成千上万其它 easy-to-port 的应用程序。 FreeBSD 和大多数流行的商业 UNIX® 代码级兼容,因此大多数应用程序不需要或者只要很少的改动就可以编译。
页式请求虚拟内存和“集成的 VM/buffer 缓存”设计有效地满足了应用程序巨大的内存需求并依然保持其他用户的交互式响应。
SMP 提供对多处理器的支持。
内建了完整的 C、 C++、 Fortran 开发工具。 许多附加的用于高级研究和开发的程序语言,也可以在通过 ports 和 packages 套件获得。
完整的系统源代码意味着您对您环境的最大程度的控制。 当您拥有了一个真正的开放系统时,为什么还要受困于私有的解决方案,任商业公司摆布呢?
丰富的在线文档。
不仅如此!
FreeBSD 基于加州大学伯克利分校计算机系统研究组(CSRG) 发布的 4.4BSD-Lite,继承了 BSD 系统开发的优良传统。 除了 CSRG 优秀的工作之外,FreeBSD 项目花费了非常多的时间来优化调整系统,使其在真实负载情况下拥有最好的性能和可靠性。 在现今, 许多商业巨人正为给 PC 操作系统增加新功能、 提升和改善其可靠性, 以便在其上展开激烈竞争的同时,FreeBSD 现在已经能够提供所有这一切了!
FreeBSD 可以提供的应用事实上仅局限于您的想象力。从软件开发到工厂自动化,从存货控制到遥远的人造卫星天线方位控制,如果商业的 UNIX® 产品可以做到,那么就非常有可能您也可以用 FreeBSD 来做! FreeBSD 也极大地受益于全世界的研究中心和大学开发的数以千计的高质量的应用程序,这些程序通常只需要很少的花费甚至免费。 可用的商业应用程序, 每天也都在大量地增加。
因为 FreeBSD 自身的源代码是完全公开的,所以对于特定的应用程序或项目,可以对系统进行最大限度的定制。 这对于大多数主流的商业生产商的操作系统来说几乎是不可能的。 以下是当前人们应用 FreeBSD 的某些程序的例子:
Internet 服务: FreeBSD 内建的强大的 TCP/IP网络使它得以成为各种 Internet 服务的理想平台, 比如:
FTP 服务器
World Wide Web 服务器(标准的或者安全的 [SSL])
IPv4 and IPv6 路由
防火墙和 NAT(“IP 伪装”) 网关
电子邮件服务器
USENET 新闻组和电子布告栏系统
还有许多...
使用 FreeBSD, 您可以容易地从便宜的 386 类 PC 起步,并随着您的企业成长,一路升级到带有 RAID 存储的四路 Xeon 服务器。
教育:您是一名计算机科学或者相关工程领域的学生吗? 学习操作系统,计算机体系结构和网络没有比在 FreeBSD 可提供的体验下动手实践更好的办法了。许多可自由使用的 CAD、数学和图形设计包也使它对于那些主要兴趣是在计算机上完成其他工作的人非常有帮助。
研究:有完整的系统源代码,FreeBSD 对于操作系统研究以及其他计算机科学分支都是一个极好的平台。 FreeBSD 可自由获得的本性,同样可以使处在不同地方的开发团队在开放的论坛上讨论问题、 交流想法与合作开发成为可能,且不必担心特别的版权协定或者限制。
网络:需要一个新的路由器? 一台域名服务器 (DNS)? 一个隔离您的内部网络的防火墙? FreeBSD 可以容易的把丢弃在角落不用的 386 或者 486 PC 变成一台完善的带包过滤能力的高级路由器。
X Window 工作站: FreeBSD 是廉价 X 终端的一种绝佳解决方案,您可以选择使用免费的 X11 服务器。与 X 终端不同,如果需要的话 FreeBSD 能够在本地直接运行程序,因而减少了中央服务器的负担。 FreeBSD 甚至能够在 “无盘” 环境下启动,这使得终端更为便宜和易于管理。
软件开发: 基本的 FreeBSD 系统带有包括著名的 GNU C/C++ 编译器和调试工具在内的一整套开发工具。
FreeBSD 可以通过 CD-ROM、DVD,以及匿名 FTP 以源代码和二进制方式获得。请查看附录 A, 获取 FreeBSD了解获取 FreeBSD 的更多细节。
1.2.2. 谁在使用 FreeBSD?
FreeBSD 被世界上最大的 IT 公司用作设备和产品的平台, 包括:
FreeBSD 也被用来支持 Internet 上一些最大的站点,包括:
等等许多。
1.3. 关于 FreeBSD 项目
下面的章节提供了项目的一些背景信息,包括简要的历史、项目目标、以及项目开发模式。
1.3.1. FreeBSD 的简要历史
Contributed by Jordan Hubbard.FreeBSD 项目起源于 1993 年早期,部分作为 “Unofficial 386BSDPatchkit” 的副产物,patchkit 的最后 3 个协调维护人是:Nate Williams,Rod Grimes 和我。
我们最初的目标是做出一份 386BSD 的测试版以修正一些 Patchkit 机制无法解决的错误(bug)。 很多人可能还记得早期的项目名称叫做 “386BSD 0.5” 或者 “386BSD Interim” 就是这个原因。
386BSD 是 Bill Jolitz 的操作系统,到那时已被严重地忽视了一年之久。由于 Patchkit 在过去的每一天里都在急剧膨胀,使得对其进行消化吸收变得越来越困难,因此我们一致同意应该做些事情并决定通过提供这个临时的“cleanup” 版本来帮助 Bill。然而,Bill 却在事先没有指出这个项目应该如何开展下去的情况下,突然决定退出这个项目,最终这个计划只好被迫停止。
没过多久, 我们认为即便没有 Bill 的支持, 项目仍有保留的价值,因此,我们采用了 David Greenman 的意见,给其命名为 “FreeBSD”。在和当时的几个用户商量后,我们提出了最初的目标, 而这件事明朗化后,这个项目就走上了正轨,甚至可能成为现实。 为了拓展 FreeBSD 的发行渠道,我抱着试试看的心态,联系了光盘商 Walnut Creek CDROM,以便那些上网不方便的用户得到 FreeBSD。 Walnut Creek CDROM 不仅支持发行 FreeBSD 光盘版的想法,还为这个计划提供了所需的计算机和高速网络接入。 在那时, 若没有 Walnut Creek CDROM 对一个完全未知的项目的空前信任,FreeBSD 不太可能像它今天这样,影响如此深远,发展如此快速。
第一个 CD-ROM (以及在整个互联网范围内发行的) 发行版本是 FreeBSD 1.0,于 1993 年 10 月发布。这个版本基于 U.C. Berkeley 的 4.3BSD-Lite(“Net/2”)磁带,也有许多组件是 386BSD 和自由软件基金会提供的。 对于第一次发行,这算是相当成功了。 在 1994 年 5 月,我们发布了更加成功的 FreeBSD 1.1 版。
在这段时间, 发生了一些意外的情况。 Novell 和 U.C. Berkeley 就 Berkeley Net/2 磁带知识产权的马拉松式的官司达成了和解。 和解中的一部分是 U.C. Berkeley 作出的让步, 令 Net/2 中的一大部分内容成为 “受限的 (encumbered)” 和属于 Novell 知识产权的代码, 而后者在不久前刚刚从 AT&T 收购了这些产权; 作为回报, Berkeley 得到了来自 Novell 的 “许诺”, 在 4.4BSD-Lite 版本正式发布时,可以声明为不受限的 (unencumbered), 现有的 Net/2 用户则强烈建议转移到这个版本。 这包括了 FreeBSD, 而我们的项目则被允许在 1994 年 6 月底之前继续发行基于 Net/2 的产品。 根据和解协议, 在最后期限之前我们发布了一个最终版本,这个版本是 FreeBSD 1.1.5.1。
接下来, FreeBSD 开始了艰苦的从全新的、 不太完整的 4.4BSD-Lite 重新编写自己的过程。 “Lite” 版本中, Berkeley 的 CSRG 删除了用于让系统能够引导的一大部分代码 (由于各种各样的法律需求), 而当时 4.4 在 Intel 平台的移植版本还有很多工作没有完成。 直到 1994 年 11 月,我们的项目才完成了这项过渡, 并通过网络以及 CD-ROM (在 12 月底) 上发布了 FreeBSD 2.0。 尽管系统中还有很多比较粗糙的地方,这个版本还是取得了巨大的成功,并在 1995 年 6 月发布了更强大和易于安装的 FreeBSD 2.0.5 版本。
我们于 1996 年 8 月发布了 FreeBSD 2.1.5 版本,它在 ISP 和商业团体中非常流行。 随后, 2.1-STABLE 分支的另一个版本应运而生,它就是 FreeBSD 2.1.7.1,在 1997 年 2 月发布并停止了 2.1-STABLE 的主流开发。现在,它处于维护状态,仅仅提供安全性的增强和其他严重的错误修补的维护(RELENG_2_1_0)。
FreeBSD 2.2 版作为 RELENG_2_2 分支,于 1996 年 11 月从开发主线 (“-CURRENT”)分出来。 它的第一个完整版(2.2.1)于 1997 年 4 月发布出来。 97 年夏秋之间,顺着 2.2 分支的更进一步的版本在开发。 其最后一版(2.2.8)于 1998 年 11 月发布出来。 第一个官方的 3.0 版本出现在 1998 年 10 月,意味着 2.2 分支结束的开始。
1999 年 1 月 20 日又出现了新的分支,就是 4.0-CURRENT 和 3.X-STABLE 分支。从 3.X-STABLE 起,3.1 在 1999 年 2 月 15 日发行,3.2 在1999 年 5 月 15 日,3.3 在 1999 年 9 月 16 日,3.4 在 1999 年 12 月 20 日,3.5 在 2000 年 6 月 24 日,接下来几天后发布了很少的修补升级至 3.5.1,加入了对 Kerberos 安全性方面的修补。 这是 3.X 分支最后一个发行版本。
随后在 2000 年 3 月 13 日出现了一个新的分支, 也就是 4.X-STABLE。 这之后发布了许多的发行版本: 4.0-RELEASE 于 2000 年 3月发布,而最后的 4.11-RELEASE 则是在 2005 年 1 月发布的。
期待已久的 5.0-RELEASE 于 2003 年 1 月 19 日正式发布。这是将近三年的开发的巅峰之作, 同时也标志了 FreeBSD在先进的多处理器和应用程序线程支持的巨大成就, 并引入了对于UltraSPARC® 和 ia64
平台的支持。之后于 2003 年 6 月发布了 5.1。 最后一个从-CURRENT 分支的 5.X 版本是 5.2.1-RELEASE, 它在2004 年 2 月正式发布。
RELENG_5 于 2004 年 8 月正式创建, 紧随其后的是 5.3-RELEASE,它是 5-STABLE 分支的标志性发行版。 这个分支的最后一个版本, 5.5-RELEASE 是在 2006 年 5 月发布的。 RELENG_5 分支不会有后续的发行版了。
其后在 2005 年 7 月又建立了 RELENG_6 分支。 而 6.X 分支上的第一个版本,即 6.0-RELEASE, 则是在 2005 年 11 月发布的。 这个分支的最后一个版本,6.4-RELEASE 是在 2008 年 11 月 发布的。 RELENG_6 分支上不再会有发布版本了。 这是最后一个支持 Alpha 硬件架构的版本。
RELENG_7 分支于 2007 年 10 月创建。 第一个这个分支的发行版是 7.0-RELEASE, 这个版本是 2008 年 2 月发布的。 最新的 10.4-RELEASE 是在 2017 年 10 月 发布的。 RELENG_7 将不会有其它后续的发布版本。
其后在 2009 年 8 月又建立了 RELENG_8 分支。 8.X 分支的第一个版本, 8.0-RELEASE 是在 2009 年 11 月发布的。 最新的 12.0-RELEASE 于 2018 年 12 月 发布。 RELENG_8 还将会有其它后续的发布版本。
目前, 中长期的开发项目继续在 9.X-CURRENT (主干, trunk) 分支中进行, 而 9.X 的 CD-ROM (当然, 也包括网络) 快照版本可以在 快照服务器 找到。
1.3.2. FreeBSD 项目目标
Contributed by Jordan Hubbard.FreeBSD 项目的目标是无附加条件地提供能够用于任何目的的软件。 我们中的许多人对代码 (以及项目本身) 都有非常大的投入,因此当然不介意偶尔有一些资金上的补偿,但我们并没打算坚决地要求得到这类资助。 我们认为我们的首要 “使命” 是为任何人提供代码,不管他们打算用这些代码做什么, 因为这样代码将能够被更广泛地使用,从而最大限度地发挥其价值。 我认为这是自由软件最基本的,同时也是为我们所倡导的一个目标。
我们源代码树中, 以 GNU公共许可证 (GPL) 或者 GNU 函数库公共许可证(LGPL) 发布的那些代码带有少许的附加限制,还好只是强制性的要求开放代码而不是别的。由于使用 GPL 的软件在商业用途上会增加若干复杂性,因此,如果可以选择的话, 我们更偏好使用限制相对更宽松的BSD 版权来发布软件。
1.3.3. FreeBSD 开发模式
撰写者 Satoshi Asami.FreeBSD 的开发是一个非常开放且有有伸缩性的过程,就像从我们的 贡献者列表里看到的,它是完全由来自全世界的数以百计的贡献者发展起来的。 FreeBSD 的开发基础结构允许数以百计的开发者通过互联网协同工作。 我们也经常关注着那些对我们的计划感兴趣的新开发者和新的创意,那些有兴趣更进一步参与项目的人只需要在 FreeBSD 技术讨论邮件列表 联系我们。 FreeBSD 公告邮件列表 对那些希望了解我们工作所涉及到哪些领域的人也是有用的。
无论是独立地工作或者封闭式的团队工作,了解 FreeBSD 计划和它的开发过程都是有益的:
- SVN 和 CVS 代码库
在过去的几年中 FreeBSD 的中央源代码树是由 CVS(并行版本控制系统)来维护的,CVS 是一个与 FreeBSD捆绑的可自由获得的源代码控制工具。自 2008 年六月起,这个项目开始转为使用SVN (Subversion)。这次转换被认为是非常必要的,因为 CVS的对于快速扩展源代码树和历史记录的限制越趋明显。现在主源码库使用SVN,客户端的工具像CVSup 和csup 这些依赖于旧的CVS 基础结构依然可以使用 ── 因为对于SVN 源码库的修改会被导回进CVS。目前只有中央原代码树是由 SVN控制的。文档,万维网和 Ports 库还仍旧使用着CVS。The primary repository resides on a machine in Santa Clara CA, USA主 CVS代码库放置在美国加利福尼亚州圣克拉拉的一台机器上,它被复制到全世界的大量镜像站上。包含-CURRENT 和-STABLE 的SVN 树也同样能非常容易的你的机器上。请参阅 同步你的源码树获得更多的相关信息。
- committer 列表
committer 是那些对 CVS 树有写权限的人,他们被授权修改 FreeBSD 的源代码 (术语 “committer” 来自于 cvs(1) 的
commit
命令,这个命令用来把新的修改提交给 CVS 代码库)。提交修正的最好方法是使用 send-pr(1) 命令。如果您发现在系统中出现了一些问题的话,您也可以通过邮件将它们发送至 FreeBSD committer 的邮件列表。- FreeBSD 核心团队
如果把 FreeBSD 项目看作一家公司,那么 FreeBSD 核心团队就相当于董事会。 核心团队的主要任务是提出总体上的发展计划,然后确定一个正确的方向。 邀请那些富有献身精神和可靠的开发者加入到 committer 队伍中来也是核心团队的工作之一,这些新的成员将作为新核心团队成员和其他人一起继续前进。 当前的核心团队是 2010 年 7 月从 committer 中选举产生的。选举每两年一次。
一些核心团队的成员还负责特定的责任范围,也就是说他们必须尽力确保某个子系统能工作正常。 FreeBSD 开发者的完整列表和他们的责任范围,请参见 贡献者列表
注意:
核心团队的大部分成员加入 FreeBSD 开发的时候都是志愿的,并没有从项目中获得任何财政上的资助, 所以“承诺”不应该被理解为“支持保证”。 前面所述“董事会”的类推并不十分准确, 或许更好的说法是,他们是一群愿意放弃他们的生活, 投身于 FreeBSD 项目而非选择其个人更好的生活的人!
- 外围贡献者
事实上,最大的开发团队正是为我们提供反馈和错误修补的用户自己。 FreeBSD 的非集中式的开发者保持联系的主要方式就是预订 FreeBSD 技术讨论邮件列表,很多事情在那里讨论。查看附录 C, Internet上的资源了解众多 FreeBSD 邮件列表的更多信息。
FreeBSD 贡献者列表 很长并在不断增长,为什么不加入它来为 FreeBSD 做贡献呢?
提供代码不是为这个计划做贡献的唯一方式; 有一个更完整的需要做的事情的列表,可以参见 FreeBSD 项目网站。
总的来说,我们的开发模式好像是一组没有拘束的同心圆。这种集中式的开发模式,主要是考虑到 FreeBSD用户的方便,同时让他们能很容易地维护同一份软件,而不会把潜在的贡献者排除在外! 我们的目标是提供一个包含有大量具有一致性 应用程序的稳定的操作系统,以利于用户的安装和使用,── 这种模式在完成目标的过程中工作得非常有效。
我们对于那些想要加入,成为 FreeBSD 开发者的期待是:具有如同当前其他人一样的投入,来确保持续的成功!
1.3.4. 最新的 FreeBSD 发行版本
FreeBSD 是一个免费使用且带有完整源代码的基于 4.4BSD-Lite 的系统,它广泛运行于 Intel i386™、i486™、Pentium®、Pentium® Pro、Celeron®、Pentium® II、Pentium® III、Pentium® 4(或者兼容系统)、Xeon™、和 Sun UltraSPARC® 的计算机系统上。它主要以 加州大学伯克利分校 的CSRG 研究小组的软件为基础,并加入了 NetBSD、OpenBSD、386BSD以及来自 自由软件基金会 的一些东西。
自从 1994 年末我们的 FreeBSD 2.0 发行以来,FreeBSD 的性能,可定制性,稳定性都有了令人注目的提高。 最大的变化是通过整合虚拟内存/文件系统中的高速缓存改进的虚拟内存系统,它不仅提升了性能,而且减少了 FreeBSD 对内存的需要,使得 5 MB 内存成为可接受的最小配置。其他的改进包括完整的 NIS 客户端和服务器端的支持,事务式 TCP 协议支持,按需拨号的 PPP,集成的 DHCP 支持,改进的 SCSI 子系统,ISDN 的支持,ATM,FDDI,快速 Gigabit 以太网(1000 Mbit)支持,提升了最新的 Adaptec 控制器的支持和修补了很多的错误。
除了最基本的系统软件,FreeBSD还提供了一个拥有成千上万广受欢迎的程序组成的软件的 Ports Collection。到本书付印时,已有超过 24,000 个 ports (ports 包括从http(WWW) 服务器到游戏、程序设计语言、编辑器以及您能想到的几乎所有的东西)。完整的 Ports Collection 大约需要500 MB 的存储空间。所有的只提供对原始代码的“修正”。这使得我们能够容易地更新软件,而且减少了老旧的 1.0 Ports Collection 对硬盘空间的浪费。要编译一个 port,您只要切换到您想要安装的程序的目录,输入 makeinstall
,然后让系统去做剩下的事情。您要编译的每一个程序完整的原始代码可以从 CD-ROM 或本地 FTP获得,所以您只需要编译您想要软件的足够的磁盘空间。几乎大多数的软件都提供了事先编译好的“package” 以方便安装,对于那些不希望从源代码编译他们自己的ports 的人只要使用一个简单的命令(pkg_add
)就可以安装。 有关 package 和 ports 的更多信息可以在第 5 章 安装应用程序: Packages 和 Ports中找到。
您可以在最近的 FreeBSD 主机的 /usr/share/doc
目录下找到许多有用的文件来帮助您安装及使用 FreeBSD。您也可以用一个 HTML 浏览器来查阅本地安装的手册,使用下面的 URL:
- FreeBSD 使用手册
- FreeBSD FAQ
您也可以查看在 http://www.FreeBSD.org/
的主站上的副本。