1. 程式人生 > >選擇FreeBSD 六個理由

選擇FreeBSD 六個理由

第一個理由:FreeBSD 是一個免費的開源的作業系統

   Linux 也是一個免費的開源的作業系統。不過 Linux 是基於 GNU General Public License 的,而 FreeBSD 是基於 BSD License 的。BSD License 比 GNU General Public License 更加寬鬆。

   FreeBSD 的系統原始碼可以通過各種方式免費的得到。系統原始碼包括核心原始碼和基本系統源 程式碼,如果你在安裝系統的時候選擇了安裝原始碼,那麼它就在 /usr/src 目錄底下。如果你經常更新系統原始碼,那麼 經常看看 /usr/src/UPDATING 是個很好的習慣。同理, 如果安裝了 Ports 系統,經常看看 /usr/ports/UPDATING 可以瞭解很多有用的資訊。
   原始碼的作用有很多。如果你是一個系統軟體或者應用軟體開發者,你可以改進原始碼為 FreeBSD 作出貢獻,或者你參考系統原始碼寫出很棒的應用軟體,或者你通過閱讀原始碼掌 握了很多知識、取得了經驗。如果你是一個普通使用者,可以通過從原始碼配置編譯系統獲得 更高的系統性能。總之,開放的原始碼不僅給使用者提供了很多好處,也為 FreeBSD 系統的 開發者提供了一個可能性,就是不同的人都可以通過原始碼找出系統中可以改進的地方並及時 反饋給系統開發者。

第二個理由:FreeBSD 是一個完整的系統
   Linux 這個詞指的是核心。當我們提到作業系統的時候,嚴格的用詞應該是 GNU/Linux 或 者某個發行版的名字,比如:SUSE Linux,Debian GNU/Linux,CentOS, Fedora, Ubuntu Linux,Mandriva Linux 等。這些發行版使用的都是相同的 Linux 核心,可能只是核心的 版本有差異而已。各個發行版的系統結構可能都是不同的:比如系統啟動的指令碼,檔案系統 的佈局,系統和軟體升級的方式方法,預設桌面環境等。

   而 FreeBSD 這個詞指的是一個完整的系統,包括核心,系統環境,應用軟體,各種文件等。 不嚴格地說,Ubuntu 和 RedHat 之間的關係就有點像 FreeBSD 和 NetBSD,OpenBSD。但是,後面這些 BSD 系統都是 從 4.4BSD 發展來 的,而 4.4BSD 本身就是一個完整的作業系統,不是一個孤單的核心。
(FreeBSD被認為是自由作業系統中的不知名的巨人。它不是Unix,但如Unix一樣執行,相容POSIX。作為一個作業系統,FreeBSD被認為相當穩建可靠。)

   FreeBSD 有一個 Core Team 來管理這個專案。這些 Core Team 成員是從為數眾多的 Committer 中選舉出來。這些 Committer 有權力對 FreeBSD 的核心程式碼進行維護,改進,升級等。 Core Team 和 Committer 對 FreeBSD 的核心程式碼質量有嚴格的把關。FreeBSD 的人經常說: 有問題的程式碼不能在這裡生存。而 Linux 的核心掌握在 Linus Torvalds 手 裡。所有有能力的人都可以對 Linux 核心作貢獻。也就是 Eric S. Raymond 所說的 市集開發模式。 從管理模式來說,Linux 核心的程式碼質量相對要低一些。因此,如果是求穩定的話, FreeBSD 肯定是不二的選擇。

   FreeBSD 的應用軟體要通過 Ports 系 統 來安裝管理。所有的軟體都經過特殊的設定來配合 FreeBSD 系統。這 些特殊的配置包括編譯的引數,安裝的路徑,文件的存放等。這樣可以方便的管理,安裝, 解除安裝應用軟體,而不需要太多人工的參與。而 Linux 系統的應用軟體管理則比較混亂,各 種發行版都不相同。不過越來越多的 Linux 發行版都在向 Ports 系統學習。典型的比如 Debian/GNU Linux 的 APT。FreeBSD 的 Ports 系統更新是相當快的。隨著系統的每次升級,Ports 系統都會有活躍的更新,以便使 各種應用軟體跟上系統的升級。

第三個理由:FreeBSD 有清晰的目錄結構
   Linux 下目錄結構有一個為人詬病的大缺點,就是檔案存放的隨意性。各種發行版可能都有 不同的選擇。比如系統庫,就有可能在 /usr/lib,或者 /lib 裡面。比如 X (XFree86 或者 Xorg) 應用軟體有可能放到 /usr/lib 裡面。當一個 Linux 使用者想要從原始碼編譯安裝 軟體的時候,往往沒有明確的標準來確定自己編譯的軟體到底應該安裝在什麼地方。他有可 能會作很多 symbolic link 把檔案連結來連結去。系統裡面經常留下很多失效的連結。而 FreeBSD 的目錄結構是相當清晰的,我們可以看看一些目錄作用的解釋:

  1. /bin/      user utilities fundamental to both single-user and multi-user environments
  2. /boot/     programs and configuration files used during operating system bootstrap
  3.                 defaults/  default bootstrapping configuration files; see loader.conf(5)
  4.                 kernel/    pure kernel executable (the operating system loaded into memory
  5.                            at boot time).
  6.                 modules/   third-party loadable kernel modules; see kldstat(8)
  7. /etc/      system configuration files and scripts
  8.                 defaults/  default system configuration files; see rc(8)
  9.                 mail/      Sendmail control files
  10.                 mtree/     mtree configuration files; see mtree(8)
  11.                 namedb/    named configuration files; see named(8)
  12.                 pam.d/     configuration files for the Pluggable Authentication
  13.                            Modules (PAM) library; see pam(8)
  14.                 periodic/  scripts that are run daily, weekly, and monthly,
  15.                            via cron(8); see periodic(8)
  16.                 ppp/       ppp configuration files; see ppp(8)
  17.                 ssl/       OpenSSL configuration files
  18. /usr/      contains the majority of user utilities and applications
  19.                 compat/   files needed to support binary compatibility with
  20.                           other operating systems, such as Linux (created by
  21.                           sysinstall(8))
  22.                 include/  standard C include files
  23.                 lib/      shared and archive ar(1)-type libraries
  24.                           aout/       a.out archive libraries
  25.                           compat/     shared libraries for compatibility
  26.                                       aout/       a.out backward compatibility
  27.                                                   libraries
  28.                 local/    local executables, libraries, etc.  Also used as the
  29.                           default destination for the FreeBSD ports framework.

   以上是 FreeBSD 系統下命令 # man hier 的輸出的節選。 基本上每個目錄都有特定的作用,什麼東西放到哪裡都有明確的規定。系統管理員在管理系 統的時候將從清晰的目錄結構中得到很多益處。BSD 學院風格的嚴謹作風在這裡體現得非常明顯!

第四個理由:FreeBSD 可以方便的安裝升級
   Linux 各種發行版的使用者肯定都有在網上到處尋找 rpm 的經歷。而且很多使用者都不敢貿然 升級自己的核心。如果要升級整個基本系統,對於很多 Linux 使用者來說就是一個浩大而繁 雜的工程了。對於 FreeBSD 來說,升級只是一件很簡單的事情。
   從升級基本系統來說,FreeBSD 可以使用各種方式來升級。比如 Anonymous CVS、CVSup 等。或者也可以二 進位制升級。比如,如果我要升級我的系統,可能我只需要如下的幾個命令就可以輕鬆的完成:

  1. #cvsup stable-supfile
  2. #cd /usr/src
  3. #make buildworld
  4. #make buildkernel
  5. #make installkernel
  6. #reboot
  7. ... ...
  8. #mergemaster -p
  9. #cd /usr/src
  10. #make installworld
  11. #mergemaster
  12. #reboot
   這些命令做了四件事情:第一是更新你的系統原始碼、第二是重新編譯系統原始碼,第三是編譯 安裝新核心、第四是更新你的系統配置檔案。這篇 The Cutting Edge 詳細的解說了怎麼更新你的系統。當然,我省略了核心的配置以及 mergemaster 這個命令的使用方法等。可能顯得有點復 雜吧,不過與 Linux 相比,我覺得還是很簡單容易上手的。
   要安裝升級應用軟體,在 FreeBSD 下就更加簡單了。如果你在安裝系統的時候選擇了安裝 Ports 系統,那麼你 只需要到 Ports 下相應的目錄輸入幾個命令就可以輕鬆完成。比如,你要安裝 Nvidia 的官方顯示卡驅動,那麼你只 要:
  1. #cd /usr/ports/x11/nvidia-driver
  2. #make install clean
   就可以自動完成驅動的安裝和配置。當然,還有更加快捷的安裝方法,使用命令 pkg_add -r nvidia-driver 可以從網上自動下載已經編 譯好的驅動然後自動安裝。FreeBSD 的官方文件 Using the Packages System 詳細解說了 packages 的使用方法。如果是升級已經安裝的驅動程式,則可以:
  1. #cd /usr/ports/x11/nvidia-driver
  2. #make deinstall reinstall clean
   或者你可以使用 portupgrade 來升級已經安裝的程式。

第五個理由:FreeBSD 的文件十分齊全
   到目前為止,Linux 的文件在很多方面還比不上 FreeBSD 的文件。Linux 因為發行版的原因, 各種文件都紛繁複雜,難於尋找。而 FreeBSD 的文件幾乎涵蓋了系統的各個方面。對於 FreeBSD 的初學者來說,仔細閱讀文件應該是必修的功課。國內的 FreeBSD 使用者甚至翻譯 了一箇中文版本,這對 閱讀英文有困難的 FreeBSD 中國使用者來說是一個福音。
   FreeBSD 的文件不僅包含最重要的 Handbook 和 FAQ,還有 專門給軟體開發人員的 Developer's Handbook 和 Porter's Handbook。而且這些文件還只是所有 FreeBSD 文件的一個部分。Unix 系統的傳 統 man 文件, GNU 的 Texinfo 文件等在 FreeBSD 中都很完整而詳細。另外,FreeBSD 還有很多系統配置的例子 (一般這些例子都在 /usr/share/examples 和 /usr/local/share/examples 目錄下)。這些例子對新手 系統管理員和普通使用者是很好的幫助。

第六個理由:FreeBSD 很穩定而且效能優異
   Linux 很穩定而且效能也很優異。在效能方面甚至要超過 FreeBSD ,比如檔案系統的效能。 在 FreeBSD 的檔案系統預設使用 softupdates 之前, FreeBSD 的磁碟效能一直是低於 Linux 的。雖然如此,Linux 的磁碟高效能是以犧牲系統 的穩定為代價的。在沒有使用日誌檔案系統 之前,Linux 的檔案系統使用會使用 async 模式將資料寫入磁碟。而 FreeBSD 預設是使用 sync 模 式將資料寫入磁碟。什麼是 async 模式和 sync 模式?簡單地講, async 模式下系統往往把不太重要的資料寫入記憶體或者 磁碟緩衝,等一段時間之後再把資料真正的寫入磁碟。這樣做的好處就是磁碟的讀寫效率比 較高,但是不安全。萬一在資料真正寫入磁碟之前系統突然掉電,那麼那些你以為已經真正 寫入磁碟的資料就會丟失。sync 模式是把所有應該寫入 磁碟的資料都立即寫入磁碟,這樣的好處是資料比較安全,但是因為大量的讀寫操作導致磁 盤效能下降。FreeBSD 在版本 4 之前一直使用 sync 模 式來寫入資料,安全是比較安全了,但是在檔案系統性能方面就比不上 Linux 了。
   Linux 開始使用日誌檔案系統之後,檔案系統的穩定和安全通過日誌系統得到了彌補。而 FreeBSD 沒有采用日誌檔案系統,而是走了另一條道路,也就是 softupdates。softupdates 的原理就是強制 metadata 更新時的依賴檢查。所謂 metadata 就是,比如磁碟的 i-node 和 v-node 之類的資料。這些資料描述了檔案資料在磁碟上儲存狀態,不是一般的資料,所以叫 元資料。有了 softupdates 之後,FreeBSD 的磁碟效能有了很大的提高,而且在穩定性方面更加出色。FreeBSD 從版本 5 開始支援後臺 fsck,就是後臺檔案系統檢測。後臺檔案系統 檢測可以讓你在系統崩潰後重新開機時迅速恢復服務,而不需要像其他不支援這個特性的系 統那樣,要等待 fsck 執行完畢之後才能進入到系統。 對於有海量硬碟的系統,這是一個非常吸引人的特性。
   另外,在網路方面。FreeBSD 的效能也是相當優異的。在很重的負載之下,FreeBSD 仍然可 以穩定的執行。這也是很多網路伺服器採用 FreeBSD 的原因之一。