第一章 FreeBSD 簡介

1.1 什麼是FreeBSD?

我想大家都知道 Microsoft Windows 是一套作業系統,FreeBSD 也是一套作業系統。FreeBSD 是一個可以在 Intel 相容個人電腦、DEC Alpha 或 PC98 架構的電腦上執行的 UNIX 作業系統。大家應該聽過另一套UNIX的作業系統 Linux,FreeBSD 也是一套免費的作業系統。它可以讓我們的個人電腦變成先進的工作站,更穩定的提供你所需的網路服務。

FreeBSD 作業系統相當容易取得及安裝,除了經由傳統的光碟安裝外,它也可以經由網路安裝、MS-DOS 分割區安裝等等。當然,我們也可以在電腦中同時安裝多種不同的作業系統,例如 Windwos 98 和 FreeBSD 同時並存也是件十分容易的事。

在 FreeBSD 上的應用軟體相當的多,也都可以免費取得,由於 FreeBSD 的穩定性高且功能強大,因此許多大型網站都以它為作業平台,其中最知名的就是 YAHOO!。Yahoo 是一個流量相當大的入口網站,他們選擇以 FreeBSD 為作業平台,由此可知 FreeBSD 的優異性。除此之外,在台灣,FreeBSD 普遍被應用於學術網路上,許多大專院校的伺服器都是使用 FreeBSD 來提供網路服務。
在寬頻網路逐漸普及的台灣,每個人都可以自行架設一台網路伺服器,以 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 中做到。

說了這麼多,我想再和低效能的 Windows 系統比較己經沒什麼義意了。然而,有這麼多的免費 UNIX 作業系統中,為什麼要選擇 FreeBSD 而不使用其他作業系統(如 Linux )呢?在網路上在討論這個問題時,每每會引發每個作業系統使用者的激辯。對於要使用何種作業系統,除了使用者偏好外,還有許多指標可以提供我們參考。

BSD UNIX 系統可以說是網路作業系統的始祖,FreeBSD 是眾多 BSD UNIX 分支中的一個,它繼承了 BSD 系統的高性能與可靠性。自從1993 年 FreeBSD 推出 1.0-RELEASE 以來,FreeBSD 開發團隊便致力於系統的調校,使其發揮絕佳的效能。在 FreeBSD 團隊的統籌努力下,使它比起其他免費的 UNIX 作業系統更有結構。在 FreeBSD 上有許多支援的免費軟體,這些軟體大都已移植收錄於 FreeBSD ports 中,使得我們在安裝軟體時變得十分輕鬆。FreeBSD 是一套真正32 位元的作業系統,具有高效能核心架構、動態函式庫共享、絕佳的網路功能,比起其他商用 UNIX 系統毫不遜色。

我覺得 FreeBSD 總部統籌發展 FreeBSD 是一件很棒的事,所有的問題回報都可以統籌管理並予以更新。 FreeBSD 推陳出新的速度相當快,每一次安裝都確保這個版本不會有上一版的缺失。所以在 Linux 或 MS-Windows 中「新版本不一定是最好」的定律並不適用於 FreeBSD。但這並不意味著你必須不斷重新安裝系統,FreeBSD 總部隨時會發佈最新更新的檔案提供下載,而且如果使用 CVSUP 就可以和更新版的 FreeBSD 保持同步更新。

FreeBSD 除了穩定、高效能外,在眾多免費的 UNIX 系統中,筆者對於 FreeBSD 情有獨鍾的原因如下:

  1. FreeBSD 支援的軟體相當多,它將常用的軟體分類管理,當需要安裝軟體時,不必自行到網路上找尋,只要到 FreeBSD ports 目錄中下個指令就安裝完成。
  2. 說明文件完整、正確。FreeBSD 擁有高品質的 Handbook、FAQ,使用者可以從 FreeBSD 網站取得。
  3. FreeBSD 目錄結構非常有組織,結構嚴謹,對於系統管理者而言比較不會紊亂。FreeBSD 將系統預設的目錄和管理者自行安裝的程式目錄劃分得十分清楚,管理者在進行升級、維護時可以一目瞭然。
  4. 安裝完後,FreeBSD 系統所有程式原始碼非常有條理的存放在特定目錄中。對於想要進行程式修改的管理者而言,不必四處尋找某支程式原始碼。筆者在 FreeBSD 及 Linux 上開發程式多年,我覺得 FreeBSD 原始碼及系統架構十分有組織,是程式開發最好的平台。
  5. FreeBSD 安裝容易、不拖泥帶水,安裝一台伺服器只需幾分鐘的時間。

1.3 為什麼不選擇FreeBSD?

許多企業選擇使用目前大多數人使用的 MS windows 做為一般作業用個人電腦的作業系統當然無可厚非。但以 MS windows 做伺服器,除了資訊人員的偏好外(或許因為不會使用其他系統吧),還有部份原因是為了在企業內資訊人員技術不足時,能求助於系統供應商。而 FreeBSD 是免費的,企業也害怕有狀況時無人可以支援,這對企業是很重要的一項因素。
然而,FreeBSD 的使用人數其實很多,而且使用者都十分熱心,在台灣的 BBS 討論區上,許多問題都可以獲得解決。這當然還不夠,現在有很多顧問公司提供 FreeBSD 的顧問服務,可以提供企業這方面的服務。雖然說 FreeBSD 的系統穩定,但在應用上如果沒有資訊人員的支援,很難能在企業中存活。我相信大部份的資訊人員都受夠了 MS windows 的折磨,這是我們該站起來的時候了,只有經由我們的主動學習,不屈不撓的精神,才能創造自己及企業的價值。

1.4 FreeBSD的版本命名規則

FreeBSD 每出一個新的版本都是以 FreeBSD A.B.C-TAG 來作為命名的方式,例如 FreeBSD 5.2-RELEASE 或 FreeBSD 5.2.1-RELEASE。

世界各地活躍的高手們組成 Core Team 對系統原始程式碼做開發和維護,幾乎系統原始程式碼每天都會有新版本和修正除錯。系統工具程式、驅動程式等等,例如 Ports 內的程式版本也常常更新。FreeBSD 的 Core Team 為了兼顧發展新功能和穩定性,所以將原始碼分成二個支線,一個是以穩定性為主的 4.x 系列,另一個是加入許多新功能的 5.x 系列。圖 1-1 即為FreeBSD 原始碼版本結構簡圖:

圖 1-1

在 FreeBSD 在開發時有一個實驗性的版本,以開發新功能為主,稱為 CURRENT ,這是主要的分支。當 CURRENT 進入穩定的階段後,會分支出一個 STABLE 的 Branch,目前 4.x 系列就是一個還在維護的分支。FreeBSD 正式發行的版本稱為 RELEASE 版本,推出RELEASE之後會不斷的更新該版本以力求穩定性,稱之為 STABLE。目前 FreeBSD 5.x 系列尚未建立獨立的分支,一旦 5.x Release 成熟穩定後,也會像 4.x 系列一樣分支出來,開始對系統效能、穩定度等加以調校。

目前最新的 4.x 版的 RELEASE 版本是 FreeBSD 4.9-RELEASE,而推出 4.9-RELEASE 之後,4.x 系列還是會持續加入必要的功能,但不會有太大的變動。

雖說目前最新的 FreeBSD 己推出 5.2.1-RELEASE,5.x 在系統架構上有許多新的變革,使用了許多新的技術,而這些新的技術經過 5.0、5.1、5.2-RELEASE 的淬煉後,功能上已驅穩定,但效能上並未經過詳細的調效。如果您對於伺服器的要求是穩定及效能走向,建議您使用 4.9-RELEASE。如果您需要更多硬體支援或嘗試新功能,您可以使用 FreeBSD 5.2.1-RELEASE。我們以下列出 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 或支援多執行緒的資料庫) 有明顯提升。

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 的站台。

中文站台

英文站台

1.7 本書光碟使用說明

本書附有二片隨書光碟,第一片光碟為 FreeBSD 5.2.1-RELEASE 安裝光碟,第二片為本書所需的所有軟體及筆者設定檔的範例。
光碟二檔案說明:

檔案名稱 說明
/examples/ 存放筆者的設定檔及一些範例程式。
/examples/etc/ 筆者 /etc/ 目錄下的設定檔。
/examples/X_Window/ 筆者關於 X Window 的設定檔。
/examples/adduser.tar.gz 大量新增帳號程式。
/examples/mysql.php 經由網頁管理 mysql 的工具。
/ports/distfiles/ 存放本書所需軟體的原始檔。
/ports/distfiles/mailserver 此目錄含有快速安裝 mail 所需的檔案及程式。
/wintools/ MS Windows 下的工具。
/wintools/putty.exe 在 MS Windows 下好用的 SSH 連線軟體。
/wintools/WinMD5.exe 檢查 MD5 的工具。
/wintools/pgadmin3-1_0_2.zip PostgreSQL Windows 端連線工具。
/wintools/psqlodbc-07_03_0200.zip PostgreSQL Windows ODBC 模組。

當您要以光碟安裝 FreeBSD 時,請使用光碟一來開機。系統安裝完畢後,您可能會安裝一些可以在 FreeBSD 上使用的軟體。當我們使用 FreeBSD ports 安裝軟體時(參考第九章),它會先檢查電腦中是否也有該軟體的原始檔,如果沒有則將自動從網路下載。為了避免必須費時從網路下載,本書光碟二收錄了本書所提及的軟體,您可以在開始安裝其他軟體之前,所將光碟二 /ports/distfiles/ 目錄下的檔案複製到 /usr/ports/distfiles/ 目錄中。

如果您要將光碟二所有軟體的資料先存到硬碟中,請先將光碟二放入光碟機中,再執行下列指令來掛入光碟,並複製檔案。

# mount /cdrom
# cp -R /cdrom/ports/distfiles/* /usr/ports/distfiles/

複製完畢後,如果要從光碟機中取出光碟,必須先執行下列指令才能將光碟退出:

# umount /cdrom