FreeBSD

**FreeBSD** 是 FreeBSD 專案的發展成果，是開放原始碼的類 Unix 作業系統，基於 BSD Unix 的原始碼衍生發展而來。加州大學伯克利分校在 1975 年至 1993 年開發了 BSD Unix 作業系統。FreeBSD 的授權條款規定原始碼開放，允許任何人自由使用，任何人都可以獲得並使用它來滿足各種需求，也可以修改它，然後再重釋出：此功能專為個人和公司量身客製化，可用於創作各種基於 FreeBSD 的商業和非商業產品。儘管 FreeBSD 直接從 BSD Unix 衍生，但它從法律角度來看並不是「UNIX」，因為現在「UNIX」商標屬於國際開放標準組織，而 FreeBSD 並沒有使用該商標的授權。

FreeBSD 第一個版本於 1993 年釋出。

FreeBSD 支援許多硬體和體系架構。和其他 BSD 家族的作業系統一樣，核心、驅動程式以及所有使用者層（Userland）應用程式（如 Unix shell 和 cat 和 ps 等命令）都儲存在 FreeBSD 原始碼庫。FreeBSD 也可以執行其他二進位軟體，比如 Linux 的。藉助 ports 和 FreeBSD 軟體套件管理器 pkg，使用者能安裝各種應用程式。根據 2005 年的調查，77％的 BSD 使用者使用 FreeBSD，因此 FreeBSD 擁有 BSD 系列中最大的使用者社群。

如今個人和企業將 FreeBSD 用於各種用途，包括雅虎，蘋果，瞻博網路，諾基亞，IBM，Yandex，Apache 軟體基金會，Hotmail，索尼和許多其他用途。

## 使用情況

FreeBSD 廣泛用於伺服器、防火牆和路由器。

FreeBSD 支援各種 X Window 桌面，如 GNOME 和 KDE。

除了支援現在流行的 x86-64、x86 指令集架構，FreeBSD 還支援 ARM、MIPS 以及 PowerPC 架構，亦可用於嵌入式系統。

### 訴訟

386BSD 和 FreeBSD 均源自 1992 年的 BSD 發行版。1992 年 1 月，BSDi 釋出 BSD/386，後更名為 BSD/OS，是基於 BSD 在 1992 年的發行版、和 FreeBSD 相似的作業系統。AT&T 聲稱 BSDi 違反了 AT&T 的原始碼授權條款，並將其告上法庭。該場訴訟達成庭外和解，相關細節並未披露，公眾所知的只有 BSDi 將轉換 4.4BSD-Lite 為新的原始碼基礎。雖然沒有參與訴訟，有人建議 FreeBSD 他們也應該將原始碼基礎轉到 4.4BSD-Lite。1994 年 11 月，FreeBSD 2.0 釋出，這是 FreeBSD 首版無任何 AT&T 代碼的版本。

## 特點

### 網路

FreeBSD 支援 IPv4，IPv6，SCTP，IPSec 和無線網路（Wi-Fi）。其 IPv6 和 IPSec 棧由 KAME Project 得到。

從 FreeBSD 5.4 開始支援共享位址冗餘協定（CARP）。CARP 允許多節點共享 IP 位址群。所以如果有節點癱瘓，其他節點仍能接收請求。

### 儲存

FreeBSD 的 UFS 檔案系統支援軟更新和檔案系統快照。FreeBSD 通過 GEOM 架構支援 RAID 功能。

FreeBSD 支援兩種資料加密基礎體系：GBDE 和 Geli。兩者操作均在磁碟層級上。GBDE 由波爾 - 亨寧・坎普編寫，並在遵守雙 BSD 授權條款（即「簡化 BSD 授權條款」和「FreeBSD 授權條款」二者）情況釋出；而 Geli 則是 GBDE 的替代品，它第一次在 FreeBSD 6.0 出現，由帕・雅・戴夫（Pawel Jakub Dawidek）編寫。

FreeBSD 支援 UFS、ZFS 等多種檔案系統。

### 安全

### 移植

## 開發

### 管理架構

### 分支

FreeBSD 開發者會同時維持至少兩種開發分支。_-CURRENT_（現在）分支時刻代表 FreeBSD 開發的最前沿。_-STABLE_ 分支為每個主要版本的 FreeBSD 而設，每 4 至 6 個月才會從此分支中更新一次 - RELEASE 分支。若一項功能足夠穩定成熟，它就很有可能向後移植（在 FreeBSD 開發者口語中稱為 _MFC_ 或_由 CURRENT 合併_）到_-STABLE_ 分支。

### 基金會

## 授權條款

FreeBSD 在 BSD 授權條款下釋出，允許任何人在保留著作權和授權條款資訊的前提下隨意使用和發行。BSD 授權條款並不限制將 FreeBSD 的原始碼在另一個協定下發行，因此任何團體都可以自由地將 FreeBSD 代碼融入它們的產品之中去。

## 發展團隊

FreeBSD 發展採用 Core Team 的方式。Core Team 的成員決定整個 FreeBSD 計劃的大方向，對於開發者問的問題有最後的決定權，其他的開發者也可以送出建設或是他們修改過的原始碼，但是 Core Team 保留最終的決定權，決定是否將這功能放進 FreeBSD。這種方式與 Linux 發展大相逕庭。

### Contributor

也可以說是 Submitter，無 FreeBSD Subversion 的存取權限，但是可以透過其它的方式，如提交 Problem Reports 或在 Mailing list 上參與討論，來貢獻 FreeBSD。

### Committer

有對 FreeBSD 的 Subversion 存取的權限，可以將他的原始碼或是檔案送到版本庫裡面。一個 committer 必須要在過去的 12 個月中有 commit 的動作。而一個活躍的 committer 指在每個月至少都有一次以上的 commit 動作。

雖然說沒有必要限制一個有 commit 權限的人只能在原始碼樹中可以存取的地方，但是如果一個 committer 要在他／她沒有做出貢獻或是不熟悉的地方，他／她必須要讀那個地方的歷史記錄，還有 MAINTAINER 檔案，確認這個部份的維護者對於更改這邊的原始碼有沒有什麼特殊的要求。

### Core Team

Core Team 成員由 committer 互相推選出來，是整個 FreeBSD 計劃的領導人，他們提升活躍的 contributor 成為 committer，還有可以指派「Hat」（指在計劃中負責一些特定工作或領域的人），也是對於決定整個計劃的大方向的最後仲裁者。在 2004 年 7 月 1 日，core team 有 9 位成員，而 core team 選舉每兩年一次。

## 平台

FreeBSD 所支援的平台依照支援程度分成四個等級。第一線平台（Tier 1，完整支援平台）目前包括 x86、x86-64。第二線平台（Tier 2，發展平台）包括 ARM、PC98、PowerPC。對於第一線與第二線平台，FreeBSD 會維持維護及穩定性，同時也都會要求大多數新功能能在這些平台正常運作。

第三線平台（Tier 3，實驗平台）目前包括了 MIPS 及 S/390，這等級的平台不為 FreeBSD 正式支援。

其他平台都歸類到第四線平台。

## 版本與歷史

### 初期歷史

FreeBSD 的發展始於 1993 年，起源於 386BSD。然而，因為 386BSD 原始碼的合理性受到質疑以及 Novell（當時 UNIX 的著作權擁有者）與柏克萊接連而來的訴訟，FreeBSD 在 1995 年 1 月釋出的 2.0-RELEASE 中以柏克萊加州大學的 4.4BSD-Lite Release 全面覆寫。FreeBSD Handbook（頁面存檔備份，存於網際網路檔案館）中有更多 FreeBSD 的發展歷史。

FreeBSD 2.0 最值得注意的部份也許是對卡內基美隆大學的 Mach Virtual Memory 系統翻修以及 FreeBSD Ports system 的發明。前者對於高負荷的系統最佳化，後者則是建立了一套簡單且強大的機制維護第三方軟體。有不少大型站台都使用 FreeBSD，像是 cdrom.com（一個巨大的軟體收集站台），Hotmail 以及 Yahoo。

FreeBSD 3.0 則引入了 ELF binary 格式，並開始支援多 CPU 系統（SMP，Symmetric multiprocessing）以及 64 位元 Alpha 平台。3.x 對於系統做了非常多的改革，這些措施在當時並沒有帶來好處，但卻是 4.X 成功的基石。

### FreeBSD 4

4.0-RELEASE 於 2000 年 3 月發行，最後一個版本 4.11-RELEASE 於 2005 年 1 月發行，並支援到 2007 年 1 月。FreeBSD 4 也是 FreeBSD 最長壽的主版本。FreeBSD 4 發展出來的 kqueue 也移植到各種不同 BSD 平台。

### FreeBSD 5

FreeBSD 5 的最後一個版本 FreeBSD 5.5 於 2006 年五月發行。

在 FreeBSD 4 的 SMP 架構下，在同一時間內只允許一個 CPU 進入核心（即 Giant Lock），FreeBSD 5 最大的改變在於改善底層核心 Locking 機制，審視並覆寫核心程式碼，使得不同的 CPU 可以同時進入系統核心，藉以增加效率。

另外一個重大的改變在於自 5.3 開始支援 m:n 執行緒的 KSE（Kernel Scheduled Entities），表示 m 個使用者執行緒共享 n 個核心執行緒的模式。

這個版本的許多貢獻是由於商業化版本的 BSD OS 團隊的支援。

### FreeBSD 6

FreeBSD 6 為一個 - STABLE 發展版本，FreeBSD 6.3 在 2008 年 1 月 18 日發行，這個版本主要針對軟體的更新，並加入 lagg（可以對多張網卡操作）的支援，並引入重新覆寫的 unionfs。FreeBSD 6.4 在 2008 年 11 月 28 日發行。

### FreeBSD 7

FreeBSD 7 為目前第二個 - STABLE 發展版本，在 2007 年 6 月 19 日進入發行程式，2008 年 2 月 27 日 7.0-RELEASE 正式釋出。2010 年 3 月 23 日 FreeBSD 7.3-RELEASE 正式釋出。新增的功能包括了：

* SCTP（實做完成）
* UFS 日誌檔案系統：gjournal（實做完成）
* 移植昇陽所發展的 DTrace（實做完成，但還未交付至 CVS）
* 移植昇陽所發展的 ZFS 檔案系統（實做完成）
* 使用 GCC4（移植完成，目前為 4.2.1）
* 對 ARM 與 MIPS 平台的支援
* 重寫過的 USB stack（實做完成，但還未交付至 CVS）
* Scalable concurrent malloc 實做（已經可以使用）
* ULE 排程表 2.0（SCHED\_ULE，實做完成），並修改加強為 SCHED\_SMP（實做完成），在交付至 CVS 時的正式名稱為 ULE 3.0，這個版本在 8 核心的機器上以 sysbench MySQL 測試的結果，速度比 Linux 2.6 快約 10%（無論是使用 Google 的 tcmalloc 或是 glibc+cfs）
* Linux 2.6 類比層（已經可以使用）
* Camellia Block Cipher（實做完成）
* ZFS 的執行

### FreeBSD 8

**FreeBSD 8.0**
**FreeBSD 8.1**

2010 年 7 月 24 日釋出 FreeBSD 8.1-RELEASE，增加如下新特性：

* 虛擬化方面：Xen DOM-U、VirtualBox guest 及 host 支援、層次式 jail。
* NFS：對 NFSv3 GSSAPI 的支援，以及試驗性的 NFSv4 客戶端和伺服器。
* 802.11s D3.03 wireless mesh 網路，以及虛擬 Access Point 支援。
* ZFS 不再是試驗性的了。
* 基於 Juniper Networks 提供 MIPS 處理器的實驗性支援。
* SMP 擴充性的增強，顯著改善在 16 核心處理器系統中的效能。
* VFS 加鎖的重新實現，顯著改善檔案系統的可延伸性。
* 顯著緩解緩衝區溢位和核心空指標問題。
* 可延伸的核心安全框架（MAC Framework）現已正式可用。
* 完全更新的 USB 堆疊改善了效能和裝置相容性，增加了 USB target 模式。

**FreeBSD 8.2**
**FreeBSD 8.3**
**FreeBSD 8.4**

### FreeBSD 9

**FreeBSD 9.0**

FreeBSD 9.0 於 2012 年 1 月釋出，是第一個 9.x 的 FreeBSD 穩定分支，有以下特性：

* 採用了新的安裝程式 bsdinstall
* ZFS 和 NFS 檔案系統得到改進
* 升級了 ATA/SATA 驅動並支援 AHCI
* 採用 LLVM/Clang 代替 GCC
* 高效的 SSH（HPN-SSH）
* PowerPC 版支援索尼的 PS3

**FreeBSD 9.1**

FreeBSD 9.1 於 2012 年 11 月發布

**FreeBSD 9.2**

FreeBSD 9.2 於 2013 年 10 月發布

**FreeBSD 9.3**

FreeBSD 9.3 於 2014 年 7 月發布

### FreeBSD 10

**FreeBSD 10.0**

FreeBSD 10.0 於 2014 年 1 月發布，這版本包含的重要改進包括：

* 在支援的平台上，clang (1) 取代 GCC 成為了預設的系統編譯器。
* 系統引入了 Unbound 作為原生的快取 DNS 伺服器。
* 基本系統中刪除了 BIND。
* 使用來自 NetBSD 的 bmake (1) 取代了原有的 make (1)。
* 使用了新的 pkg (7) 作為包管理工具。
* 刪去了舊式的包管理工具 pkg\_add (1)、pkg\_delete (1)，及其相關工具。
* 大幅強化了支援虛擬化，新增了 bhyve(8) 虛擬機，以及 virtio (4) 和對微軟 Hyper-V 的原生半虛擬化支援。
* 為 ZFS 添加了用於 SSD 的 TRIM 支援。
* 為 ZFS 添加了高效能的 LZ4 壓縮演算法支援。

**FreeBSD 10.1**

FreeBSD 10.1 於 2014 年 11 月 6 日正式發布

**FreeBSD 10.2**

FreeBSD 10.2 於 2015 年 8 月 13 日正式發布。主要改進包括：

* resolvconf (8) 更新至 3.7.0，改進了 DNS 隱私保護。
* ntp 更新至 4.2.8p3，修正了大量先前版本的問題。
* 新增了用於支援虛擬化環境的 rc (8) 指令碼 growfs，用於在系統首次引導時擴大根檔案系統。
* 更新了 Linux (R) ABI 相容支援，以支援 Centos (TM) 6 ports.
* 將 drm 更新至 Linux (R) 3.8.13，支援同時執行多個 X server。
* 針對 FreeBSD/arm 平台的大量更新及改進。
* 多個 ZFS 相關效能及可靠性改進，增加了大塊（1MB）支援。
* GNOME 版本更新到 3.14.2.
* KDE 版本更新到 4.14.3.

**FreeBSD 10.3**

FreeBSD 10.3 於 2016 年 3 月 25 日正式發布

### FreeBSD 11

**FreeBSD 11.0**

FreeBSD 11.0 於 2016 年 9 月 22 日正式發布

### FreeBSD 12

#### FreeBSD 12.0

#### FreeBSD 12.1

FreeBSD 12.1 於 2018 年 12 月 11 日正式發布

#### FreeBSD 12.2

FreeBSD 12.2 於 2020 年 10 月 28 日正式釋出

### FreeBSD 13

#### FreeBSD 13.0

FreeBSD 13.0 於 2022 年 4 月 13 日正式釋出

#### FreeBSD 13.1

## 命名規則

* **A-CURRENT**

　
: 在 - CURRENT 分支所使用的 CVS Tag 為 `.`，固定稱為 A-CURRENT，如目前 - CURRENT 分支為 12-CURRENT，這個版本只建議開發者使用，通常在郵件論壇上測試過覺得沒有什麼大問題的功能會先加到這分支。

* **A.B-STABLE**

　
: 在 - STABLE 分支里所使用的 CVS Tag 為 `RELENG_A`，如目前 - STABLE 分支為 `RELENG_10` 與 `RELENG_9`。許多新功能在 - CURRENT 分支測試一段期間覺得沒有問題後就會將該項功能逆向移植（MFC，Merge from current）回 `RELENG_10`。

* **A.B-BETA**、**A.B-RC**

　
: 這是當開發團隊認為 - STABLE 分支有足夠新功能或其他理由認為足以釋出新版 FreeBSD 時，會先將 - STABLE 分支名稱改為 - BETA，表示要進入 Release Cycle。

* **A.B-RELEASE**

　
: -RELEASE 分支使用的 CVS Tag 為 `RELENG_A_B` 或 `RELENG_A_B_C`，這些 CVS 分支不會增加功能，只做安全維護。這些分支是在開發團隊認為 - STABLE 的功能累積到一定程度後，可以整理出來出新版本。譬如 6.2-RELEASE、5.4-RELEASE。

* **A.B.C-BETA**、**A.B.C-RC**、**A.B.C-RELEASE**

　
: 當離上次釋出版本的時間太短時，FreeBSD 團隊會考慮只在後面加上一個次要版號。

## 授權條款

FreeBSD 包含了 GNU 通用公眾授權條款、GNU 較寬鬆公共許可證、ISC 授權條款、通用開發與散布授權條款和啤酒軟體授權條款的程式碼，也有使用三條款和四條款的 BSD 授權條款的程式碼。另外有些驅動程式也包涵了二進位大型物件，像是 Atheros 公司的硬體抽象層。這使所有人都可以自由使用還有再散布 FreeBSD。

不過，FreeBSD 的核心和新開發的程式碼大多都使用兩條款的 BSD 授權條款釋出，許多使用 GPL 的程式碼都必須經過淨室工程，以其他授權方式重寫，這主要是避免整個核心受到 GPL 影響。

## 已知問題

* 一般來說，FreeBSD 支援的硬體較 Linux 少。安裝前請參考 FreeBSD 網站上 Release Information 里要安裝版本的 Hardware Notes。
* 其他已知問題

## 相關書籍

* _Absolute BSD, The Ultimate Guide to FreeBSD_. Michael Lucas. No Starch Press, July 2002. ISBN 1-886411-74-3.
* _BSD Hacks, 100 Industrial-Strength tips for BSD users and administrators_. Dru Lavigne. O'Reilly, May 2004. ISBN 0-596-00679-9.
* _The Complete FreeBSD, 4th Edition, Documentation from the Source_. Greg Lehey. O'Reilly, April 2003 ISBN 0-596-00516-4.
* _The Design and Implementation of the FreeBSD Operating System_. Marshall Kirk McKusick and George V. Neville-Neil. Pearson Education. ISBN 0-201-70245-2. Expected availability August 2004.
* _The FreeBSD Corporate Networkers Guide_. Ted Mittelstaedt. Addison-Wesley, December 2000. Paperback, book & CD edition, 401 pages. ISBN 0-201-70481-1.
* _Designing BSD Rootkits: A Introduction to Kernel Hacking_. Joseph Kong, No Starch Press, US, March 29 2007. Paperback, 144 pages, ISBN 1-59327-142-5.

## IRC

正體中文：

* Freenode 上的 #bsdchat

其他 channel 可以參考 FreeBSD 官方 wiki 的（頁面存檔備份，存於網際網路檔案館）頁面。

## 參見

* BSD
* 386BSD
* DragonFly BSD
* NetBSD
* OpenBSD
* BSD 小惡魔
* FreeSBIE

## 參考文獻

## 外部連結

* FreeBSD 官方站點（頁面存檔備份，存於網際網路檔案館）（英文）
* FreeBSD 官方維基（頁面存檔備份，存於網際網路檔案館）（英文）
* FreeBSD 中文網站（頁面存檔備份，存於網際網路檔案館）（簡體中文）
* FreeBSD 中國社群站點
* www.freebsdsoftware.org（頁面存檔備份，存於網際網路檔案館）
* ChinaUnix UNIX 技術站點（頁面存檔備份，存於網際網路檔案館）
* FreeBSD 使用手冊（頁面存檔備份，存於網際網路檔案館）（簡體中文）
* FreeBSD 使用手冊（頁面存檔備份，存於網際網路檔案館）（繁體中文）