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 選擇的不同的多處理器同步策略,並開發一些微核心功能。