第一章 FreeBSD 简介

1.1 什么是FreeBSD?

我想大家都知道 Microsoft Windows 是一套操作系统,FreeBSD 也是一套操作系统。FreeBSD 是一个可以在 Intel 兼容个人计算机、DEC Alpha 或 PC98 架构的计算机上执行的 UNIX 操作系统。大家应该听过另一套UNIX的操作系统 Linux,FreeBSD 也是一套免费的操作系统。它可以让我们的个人计算机变成先进的工作站,更稳定的提供你所需的网络服务。

BSD UNIX 系统可以说是网络操作系统的始祖,FreeBSD 是众多 BSD UNIX 分支中的一个,它继承了 BSD 系统的高性能与可靠性。自从1993 年 FreeBSD 推出 1.0-RELEASE 以来,FreeBSD 开发团队便致力于系统的调校,使其发挥绝佳的效能。在 FreeBSD 团队的统筹努力下,使它比起其它免费的 UNIX 操作系统更有结构。在 FreeBSD 上有许多支持的免费软件,这些软件大都已移植收录于 FreeBSD ports 中,使得我们在安装软件时变得十分轻松。FreeBSD 支持 32 位、64 位的许多不同平台,具有高效能核心架构、动态函式库共享、绝佳的网络功能,比起其它商用 UNIX 系统毫不逊色。

FreeBSD 操作系统相当容易取得及安装,除了经由传统的光盘安装外,它也可以经由网络安装、MS-DOS 分割区安装等等。当然,我们也可以在计算机中同时安装多种不同的操作系统,例如 Windwos 98 和 FreeBSD 同时并存也是件十分容易的事。

在 FreeBSD 上的应用软件相当的多,也都可以免费取得,由于 FreeBSD 的稳定性高且功能强大,因此许多大型网站都以它为作业平台,其中最知名的就是 YAHOO!。YAHOO! 是一个流量相当大的入口网站,他们选择以 FreeBSD 为作业平台,由此可知 FreeBSD 的优异性。除此之外,在台湾,FreeBSD 普遍被应用于学术网络上,许多大专院校的服务器都是使用 FreeBSD 来提供网络服务。

但是您别以为 FreeBSD 只能用来做为网络服务器,FreeBSD 也可以是一个良好的个人操作系统。事实上,Mac OS X 就是使用 FreeBSD 做为系统核心。大家都知道 Mac OS 是个人计算机上有名的操作系统,它会使用 FreeBSD 做为系统核心,可见 FreeBSD 的品质亦深获 Apple 的肯定。

在宽频网络逐渐普及的台湾,每个人都可以自行架设一台网络服务器,以 FreeBSD 来提供网络服务(如网页、邮件、档案存取等)。值得一提的是 FreeBSD 并不像 MS-Windows 一样每每要求使用者升级计算机才能使用。FreeBSD 对于硬件的要求很低,你可以用一台 Intel 586-133MHz 的旧计算机来安装 FreeBSD,这也算是癈物利用吧。

1.2 为什么要选择FreeBSD?

现在的个人计算机操作系统市场中,是以 MS-Windows 独大,但在网络服务器市场中,UNIX 系统的使用率可不输 MS-Windows 喔。我个人认为 MS-Windows 之所以会有那么多的使用者主要是因为他的使用者接口对初学者而言较容易操作,再加上许多软件的配合及盗版的助长,安装软件只要一直按下一步就完成。使得使用者即便它的稳定性不高也得乖乖的接受。

其实初学者没有试过其它的操作系统才会有这样的误解,因为一直用 MS-Windows 才会认为当机是无可避免的事,当机对于 MS-Windows 或许是无可避免,但在其它 UNIX 系统中可不常见。在 UNIX 系列的操作系统中,也可以有像 MS-Windows 的图形接口,几乎所有在 MS-Windows 上可以做的事,在 FreeBSD 上都可以做得到,唯一的不同点是你不必花钱去取得你想要的功能。包括排版、图形处理、MP3、多媒体、网络芳邻等等都可以在 FreeBSD 中做到。

重点是,对于一台网络服务器而言,图形接口会占用系统资源,而且必须安装一堆有的没的软件。笔者偏好干干脆净净的系统,而 FreeBSD 正好具有这个优点。不过这并不代表您不能使用图形接口,您还是可以安装类似 Windows 的图形接口,让您使用它来做为平日使用的个人计算机。此外,FreeBSD 把自己定位为最佳的网络服务器,它承袭了 BSD 优良的网络血统,在提供服务时能有绝佳的效能表现。而且,它是免费的。

然而,有这么多的免费 UNIX 操作系统中,为什么要选择 FreeBSD 而不使用其它操作系统(如 Linux )呢?在网络上在讨论这个问题时,每每会引发每个操作系统使用者的激辩。对于要使用何种操作系统,除了使用者偏好外,还有许多指标可以提供我们参考。

FreeBSD 是一套完整的操作系统

我们平常所说的 Linux 指的是它的核心 (Kernel),Kernel 只是整个操作系统的一部份,除了 Kernel 外,我们还需要一些基本的指令、系统及目录架构、图形接口等。Linux 的 Distribution 就是各个不同的组织或公司自行收集一些系统必备的程序,制作出一个操作系统。Linux 系统有很多的 Distribution,如 Redhat、SUSE、Debian 等。因为每个 Distribution 都有自己的程序或架构,所以每个 Distribution 都长的不一样。如果您使用的是 Linux,在 Linux 三十多种 Distribution 中,每一种之间都有些许差异,在设定上用法都不同。

而 FreeBSD 指的不只是核心而已,它是一套完整的操作系统。从系统核心到使用者接口、各种常用指令都是由 FreeBSD 总部所统一推出。因此,FreeBSD 每一个版本之间有着共同的架构,不同软件之间的整合搭配性较为完整,不管是设定、学习都很容易。

由核心团队统筹开发

FreeBSD 整个系统都是由总部的核心团队所维护,所以整个系统都搭配得很好。而 Linux 只有 Kernel 由 Linus Torvlds 所维护。因为 FreeBSD 整个系统都是由总部所开发,不只系统整体较有规划,各个程序之间搭配起来也比较紧密。如果您使用 Linux,由于 Kernel 和其它的程序是由不同组织所维护,在升级时,比较麻烦。而 FreeBSD 就简单多了,每次一有新的版本,一定是整个系统一起升级。

我觉得 FreeBSD 总部统筹发展 FreeBSD 是一件很棒的事,所有的问题回报都可以统筹管理并予以更新。FreeBSD 推陈出新的速度相当快,每一次安装都确保这个版本不会有上一版的缺失。所以在 Linux 或 MS-Windows 中「新版本不一定是最好」的定律并不适用于 FreeBSD。但这并不意味着你必须不断重新安装系统,FreeBSD 总部随时会发布最新更新的档案提供下载,而且如果使用 CVSUP 就可以和更新版的 FreeBSD 保持同步更新。

完整的使用手册

FreeBSD 的使用手册非常完整,而且会随着软件一起更新。每次一有新的版本推出,FreeBSD 的文件也会做相对的更新。在 FreeBSD 的官方网站上,我们可以轻松的取得这些高品质的手册及文件。

软件安装的便利性

FreeBSD 支持的软件相当多,它将常用的软件分类管理,当需要安装软件时,使用者不必自行到网络上找寻,只要到 FreeBSD ports 目录中下个指令就安装完成。

条理分明的系统架构

FreeBSD 目录结构非常有组织,结构严谨,对于系统管理者而言比较不会紊乱。FreeBSD 将系统预设的目录和管理者自行安装的程序目录划分得十分清楚,管理者在进行升级、维护时可以一目了然。

完美的程序开发平台

安装完 FreeBSD 后,系统所有程序原始码非常有条理的存放在特定目录中。对于想要进行程序修改的管理者而言,不必四处寻找某支程序原始码。笔者在 FreeBSD 及 Linux 上开发程序多年,我觉得 FreeBSD 原始码及系统架构十分有组织,是程序开发最好的平台。

而且 FreeBSD 的版权较为宽松,对于想要以 FreeBSD 为基础开发产品的公司而言,它可以保护您的修改不会被其它对手抄袭。

1.3 为什么不选择FreeBSD?

许多企业选择使用目前大多数人使用的 MS windows 做为一般作业用个人计算机的操作系统当然无可厚非。但以 MS windows 做服务器,除了信息人员的偏好外(或许因为不会使用其它系统吧),还有部份原因是为了在企业内信息人员技术不足时,能求助于系统供货商。而 FreeBSD 是免费的,企业也害怕有状况时无人可以支持,这对企业是很重要的一项因素。

然而,FreeBSD 的使用人数其实很多,而且使用者都十分热心,在台湾的 BBS 讨论区上,许多问题都可以获得解决。这当然还不够,现在有很多顾问公司提供 FreeBSD 的顾问服务,可以提供企业这方面的服务。虽然说 FreeBSD 的系统稳定,但在应用上如果没有信息人员的支持,很难能在企业中存活。但正因市场上了解 FreeBSD 的人较少,若我们能主动学习,必能为自己创造更多价值。

FreeBSD 目前支持的平台不多,若您不是使用 X86 的系统,而是使用 ARM、MIPS 等平台,您就必须寻求其它的解决方案。

1.4 FreeBSD的版本命名规则

FreeBSD 每出一个新的版本都是以 FreeBSD A.B.C-TAG 来作为命名的方式,例如 FreeBSD 5.4-RELEASE 或 FreeBSD 5.2.1-RELEASE。

世界各地活跃的高手们组成 Core Team 对系统原始程序代码做开发和维护,几乎系统原始程序代码每天都会有新版本和修正除错。系统工具程序、驱动程序等等,例如 Ports 内的程序版本也常常更新。FreeBSD 的 Core Team 为了兼顾发展新功能和稳定性,所以将原始码 进入稳定阶段,就会建立一个新的分支,并在新的分支上加强稳定性及效能。所有新的功能会先在 Current 上进行开发,有必要才会放到稳定的分支中。图 1-1 即为 目前 FreeBSD 原始码版本结构简图:

图 1-1

在 FreeBSD 在开发时有一个实验性的版本,以开发新功能为主,称为 CURRENT ,这是主要的分支。当 CURRENT 进入稳定的阶段后,会分支出一个 STABLE 的 Branch,目前 5.x 系列就是一个还在维护的分支。FreeBSD 4.x 分支自从 4.11 之后应该不会再推出新的版本了,以后 STABLE 版将以 5.x 为主。FreeBSD 正式发行的版本称为 RELEASE 版本,推出RELEASE之后会不断的更新该版本以力求稳定性,称之为 STABLE。以 FreeBSD 5.x 为例,自从 Current 开发到 5.3 时,因为品质已经十分稳定,因此产生新的分支,以后 5.x 就会在此分支下开发,而一些新的功能或是实验性质的程序会被放到 Current 中。

在 FreeBSD 在 5.x 中加入了设多新的功能,在系统架构上有许多新的变革,使用了许多新的技术,而这些新的技术经过 5.0、5.1、5.2、5.3-RELEASE 的淬炼后,功能上已十分稳定。而 FreeBSD 4.11 是 4.x 最后的版本,如果您十分保守,或是您所要跑的软件只支持 4.x,历史悠久的 FreeBSD 4.x 也是不错的选择。我们以下列出 FreeBSD 5.x 和 4.x 主要的差异供读者参考:

  1. SMPng (Symmetric MultiProcessor next generation) 对多颗 CPU 的支持有更好的效率。
  2. 对于新硬件的支持更完整。例如支持蓝芽、32 bit 的 PCMCIA 等。FreeBSD 5.x 使用不同的方式管理硬件装置,日后对于新的硬件支持应该会比较迅速。
  3. 更进步的档案系统功能。FreeBSD 一项最大的弱点就是缺乏一个比较好的档案系统格式,但 5.x 新增了一些新的功能改善即有的档案系统。例如 background fsck,可以让不正常关机后的系统可以更快速进入正常运作。FreeBSD 5.x 使用 UFS2,它支持更大的档案及更多档案属性。另外,还有 snapshot 功能,可以让我们对档案系统进行快照,保留某一时间的档案内容。
  4. 支援 kernel thread,FreeBSD 5.x 的 KSE (Kernel scheduled Entities) 让我们可以拥有 kernel mode 的多重执行绪。这项功能对于一些大型系统效率 (如使用 Apache 2 或支持多执行绪的数据库) 有明显提升。

FreeBSD 4.x 发展到最后,可以说是一套最稳定的操作系统,而由于 5.x 加入了许多新的功能,在稳定性方面略逊一筹。为了改善 5.x 的稳定性及效能,FreeBSD 很快就推出 6.x 系列。6.x 的主要目的是改善 5.x 的稳定性及提升系统效能,在功能上不会有太多的不同。所以,目前选用 6.x 应该是最好的选择。

1.5 如何取得FreeBSD?

FreeBSD 可以经由免费取得,我们可以自各大 FTP 站台下载 ISO 档,自行烧录成光盘来安装,也可以透过 FTP 站台以网络安装。 国内对 FreeBSD 收集最知名的应该是交大资工,如果您要下载 ISO 档的话,可以在该 FTP 站台中的 ISO-IMAGE 目录中找到。以交大资工而言,ISO-IMAGE 通常放在 /pub/releases/i386/ISO-IMAGES/。我们一般的 PC 都是属于 i386 的架构,所以您在 i386 目录下看到一堆不同版本的 STABLE 及 RELEASE 都是你可以下载安装的版本。

1.6 如何得到更多信息?

笔者网站有本书所有内容及一些关于 FreeBSD 的文章。除此之外,FreeBSD 的使用者众多,且十分热心,在国内外有许多高手们将自己的经验开放给使用者参考。以下即为部份 FreeBSD 的站台。

中文站台

英文站台

1.7 本书光盘使用说明

本书附有二片随书光盘,第一片光盘为 FreeBSD 6.0-RELEASE 安装光盘,第二片为本书所需的所有软件及笔者设定文件的范例。
光盘二档案说明:

文件名称 说明
/book/ 本书全文的电子文件。
/examples/ 存放笔者的设定文件及一些范例程序。
/examples/etc/ 笔者 /etc/ 目录下的设定文件。
/examples/adduser.tar.gz 大量新增账号程序。
/mailserver 此目录含有快速安装 mail 所需的档案及程序。
/wintools/ MS Windows 下的工具。
/wintools/putty.exe 在 MS Windows 下好用的 SSH 联机软件。
/wintools/WinMD5.exe 检查 MD5 的工具。

当您要以光盘安装 FreeBSD 时,请使用光盘一来开机。系统安装完毕后,您可能会安装一些可以在 FreeBSD 上使用的软件。当我们使用 FreeBSD ports 安装软件时(参考「软件安装」一章的说明),它会先检查计算机中是否也有该软件的原始文件,如果没有则将自动从网络下载。