BSD

伯克利軟體套件（，縮寫：BSD；也被稱為伯克利 Unix 或 Berkeley Unix）是一個衍生自 Unix（類 Unix）的作業系統，1970 年代由伯克利加州大學的學生比爾・喬伊開創，也被用來代表其衍生出的各種套件。

BSD 許可證非常地寬鬆，因此 BSD 常被當作工作站級別的 Unix 系統，許多 1980 年代成立的計算機公司都從 BSD 中獲益，比較著名的例子如 DEC 的，以及 Sun 公司的 SunOS。 1990 年代，BSD 大幅度被 System V 4.x 版以及系統所取代，但其開源版本被用在網際網路的開發。

歷史

1.1 PDP-11 開始

最初的 Unix 套件源自 1970 年代的貝爾實驗室，作業系統中包含原始碼，這樣研究人員以及大學都可以參與修改擴充。1974 年，第一個伯克利的 Unix 系統被安裝在 PDP-11 機器上，電腦科學係而後將其用作擴充套件研究。

1.2 VAX 版本

1978 年，伯克利安裝了第一臺 VAX 計算機，但將 Unix 移植到 VAX 構架的 UNIX/32V，並沒有利用 VAX 虛擬記憶體的能力。伯克利的學生重寫了 32V 的大部分核心，以實現虛擬記憶體的支援。1979 年，3BSD 誕生了，這個新系統完整包括了一個新核心、從 2BSD 移植到 VAX 的工具，還有 32V 原來的工具。

3BSD 的成功使得美國國防高等研究計劃署（DARPA）決定資助伯克利的計算機系統研究小組（CSRG），以開發一個 Unix 標準平臺，供 DARPA 未來研究。1980 年 10 月，該小組發布了 4BSD，此版本對 3BSD 有許多改進。

相較於 VAX 機器的主流系統 VMS，使用者對 BSD 時有批評。1981 年 6 月，4.1BSD 發布，比爾・喬伊大幅度提高了該版本內核的效能，使之在多個平臺上與 VMS 相媲美。為了避免與 AT&T 的 UNIX System V（UNIX 第五版）混淆，這個版本沒有取名為 5BSD。

4.2BSD 歷經兩年後才得以問世，實現了多項重大改進。之前有三個中間版本相繼推出：4.1a 引入了 BBN 科技預試中的 TCP/IP 協議棧的修改版；4.1b 引入了由實現的新型檔案系統（Berkeley Fast File System，FFS）；4.1c 是 4.2BSD 開發最後幾個月的過渡版。

1983 年 8 月，4.2BSD 正式發布。這是 1982 年比爾・喬伊離開小組、前去建立 Sun 公司後的第一個版本，自那時起馬紹爾・克爾克・麥庫錫克和和一直負責領導該專案。值得一提的是，這次 BSD 小惡魔正式出場，最初是馬紹爾・克爾克・麥庫錫克的畫作，出現在列印好的文件封面上，由 USENIX 發行。

1.3 BSD 版本

1986 年 6 月，4.3BSD 發布。該版本主要是將 4.2BSD 的許多新貢獻作效能上的提高，原來的 4.1BSD 沒有很好地協調。在該版本之前，BSD 的 TCP/IP 實現已經跟 BBN 的官方實現有較大差異。經過數月測試後，DARPA 認為 4.2BSD 更合適，所以在 4.3BSD 中作了保留。 （參見網際網路歷史）

4.3BSD 後，BSD 逐漸拋開老式的 VAX 平臺。 Computer Consoles 有限公司開發的 Power 6/32 平臺（代號為 "Tahoe"），當時看來大有可為，但不久即被他們的開發員所遺棄。然後，1988 年 6 月移植的 4.3BSD-Tahoe 卻表現不俗，BSD 將依賴於機器跟不依賴於機器的程式碼分離，為未來系統的可移植性打下了良好的基礎。

到此為止，所有的 BSD 版本都混合了專屬的 AT&T UNIX 程式碼，這樣繼續使用就需要從 AT&T 獲得許可證。原始碼許可證當時非常地昂貴，幾個其他組織對單獨的網路程式碼版感興趣，完全獨立於 AT&T，這樣就可不受許可證的支配。 1989 年 6 月，Networking Release 1（Net/1）誕生了，沒有 AT&T 授權也能使用，可遵照 BSD 許可證進行自由再發布。

1990 年初，推出了 4.3BSD-Reno。該版本是 4.4BSD 早期開發的過渡版，使用該版本被戲稱為是一種賭博，因為 Reno 就是內華達州的賭城雷諾。

1.4 Net/2 以及法律問題

Net/1 以後，提議，BSD 系統中應該有更多的非 AT&T 部分，以 Net/1 的協議發布。隨後，他開始一個專案，著手重新實現一些 Unix 標準工具，其中不使用原來的 AT&T 程式碼。例如，Vi，也就是基於最初 Unix 上 ed 的編輯器，被重寫為 nvi（new vi）。 18 個月後，所有 AT&T 的工具被替換，剩下的只是存留在內核的一些 AT&T 檔案。殘余文件被剔除後，1991 年 6 月，Net/2 誕生了，這是一個全新的作業系統，並且可以自由發布。

Net/2 成為 Intel 80386 構架上兩種移植版的主要組成部分，包括由威廉・喬利茨負責，自由的；以及專屬的 BSD/OS，由（BSDi）負責。386BSD 本身雖然短命，但在不久之後成為了 NetBSD 和 FreeBSD 原始程式碼的基礎。

BSDi 很快就與 AT&T 的 Unix 系統實驗室（Unix System Laboratories，USL）附屬公司產生了法律糾紛，後者將擁有 System V 版權，以及 Unix 商標。 1992 年，USL 正式對 BSDi 提起訴訟，這導致 Net/2 發布被中止，直到其原始碼能夠被鑑定為符合 USL 的版權。

由於最後判決懸而未決，這樁法律訴訟將 BSD 後裔，特別是自由軟體後裔的開發，延遲了兩年，這導致沒有法律問題的 Linux 核心獲得了極大的支援。Linux 跟 386BSD 的開發幾乎同時起步，其作者林納斯・託瓦茲曾說，當時如果有基於 80386 平臺的自由類 Unix 作業系統，他就可能不會創造 Linux。儘管無法預料這給以後的軟體業究竟造成了什麼樣的影響，但有一點可以肯定，Linux 更加豐富了這塊土壤。

1.5 4.4BSD 及其後裔

這樁訴訟在 1994 年 1 月了結，更多地滿足了伯克利的利益。伯克利套件的 18,000 個檔案中，只有 3 個檔案被要求刪除，另有 70 個檔案被要求修改，並顯示 USL 的版權說明。這項調解另外要求，USL 不得對下面的 4.4BSD 提起訴訟，不管是使用者還是伯克利程式碼的分發者。

1994 年 6 月，4.4BSD 以兩種形式發布：可自由再發布的 4.4BSD-Lite，不包含 AT&T 原始碼；另有 4.4BSD-Encumbered，跟以前的版本一樣，遵照 AT&T 的許可證。

伯克利的最終版本是 1995 年的 4.4BSD-Lite Release 2，而後 CSRG 解散，在伯克利的 BSD 開發告一段落。在這之後，幾種基於 4.4BSD 的套件（比如 FreeBSD、OpenBSD 和 NetBSD）得以繼續維護。

另外，由於 BSD 許可證的寬容，許多其他的作業系統，不管是自由還是專屬，都採用了 BSD 的程式碼。例如，Microsoft Windows 在 TCP/IP 的實現上引入了 BSD 程式碼；經過重新編譯，在當前 Windows 版本中，還採用了許多 BSD 命令列下的網路工具。

技術

BSD 率先包含了支援網際網路協議棧（Stack）、伯克利套接字（sockets）的函式庫。透過將套接字與 Unix 作業系統的檔案描述符相整合，庫使用者透過計算機網路讀寫資料，跟直接在磁碟上操作一樣容易。AT&T 最後也發布了他們的 STREAMS 庫，在軟體棧中引入類似的功能，雖然結構層有所改進，但此時套接字型檔已經廣泛使用。由於 STREAMS 少了對開放套接字的輪詢功能（類似於伯克利庫中的 select 呼叫），使得將軟體移植到這個新的 API 很困難。

時至今日，BSD 仍在學術機構，乃至許多商業或自由產品的高科技實驗中，繼續被用作試驗平臺，甚至在嵌入式裝置中，其使用也在增長。由於 BSD 設計出眾，程式碼編寫清晰，包括它的文件（特別是參考文件，常被稱為 “man pages”），使得這樣的系統，幾乎成為程式設計師眼中的樂土。

許多公司都使用 BSD 衍生出的程式碼，如此便可以支援他們的智慧財產權。許多自由軟體，如 Linux、GNU 工程都遵照 GNU GPL 協議，與之相比，BSD 許可協議要更加靈活。當然，這也導致人們的機器上執行著一些 BSD 軟體，但自己卻並不知情。有興趣的話，可以試著找找符號 “University of California, Berkeley”，比如在產品文件內，二進位制程式碼中的靜態資料段，或者 ROM 中，還有透過一些產品的使用者介面看看 “about”（關於）內容。

有意思的是，透過一個二進位制相容層（compatibility layer），在 BSD 作業系統上，可以執行相同構架下其他作業系統上的原程式。這比模擬器要快得多，透過這個方法，針對 Linux 的應用程式，也可以在 BSD 上全速執行。所以，BSD 不僅適合作為伺服器，也可作為工作站來使用，眾所周知，現在針對 Linux 的商業或封閉原始碼軟體越來越多。管理員也可以將一些原本只用於商業 Unix 變種的專屬軟體，轉移到 BSD，這樣在保持原有功能的同時，作業系統更趨現代，可繼續使用這些軟體，直到有更好的替代。

結末，當前的 BSD 作業系統變種支援各種通用標準，包括 IEEE、ANSI、ISO 以及 POSIX，同時保持傳統 BSD 的良好風範。

BSD 家族

當前衍生自 BSD 的類 Unix 作業系統可應用於多種硬體構架。

BSD/OS（已倒閉）
FreeBSD
Debian GNU/kFreeBSD
DragonFly BSD，一個由 FreeBSD 4-STABLE 分支出來的專案
FireflyBSD
DesktopBSD
TrueOS
GhostBSD
PicoBSD，為在單張 1.44MB 軟盤執行而設計的 FreeBSD 精簡版本
TrustedBSD，非作業系統，而是為 FreeBSD 和 Darwin 構件擴充套件的一個專案
ClosedBSD
pfSense
FreeNAS，一個基於 FreeBSD 的輕量級 NAS 伺服器
FreeSBIE 專案，提供 FreeBSD 各個發行版本的 Live CD，類似於基於 Linux 的 Knoppix 專案
Frenzy LiveCD，基於 FreeBSD 的 Live CD 專案，主要針對俄語使用者
BSDeviant，一個 FreeBSD 的 Live CD 專案，產生可以存在一張迷你 CD-R 上的系統
m0n0wall 是一個基於 FreeBSD 的防火牆專案
NetBSD
Debian GNU/NetBSD
OpenBSD
ekkoBSD（已倒閉）
MicroBSD
MirOS BSD
HPBSD（已倒閉）
RedBSD：嵌入式系統映象，使用 BSD 和 Ruby 核心

結構

跟 AT&T Unix 一樣，BSD 也採用單核心，這意味著核心中的裝置驅動，在核心態下執行，從而作為作業系統的核心部分。 BSD 的早期版本被用作組建 Sun 公司的 SunOS，造就了 Unix 工作站的第一波熱潮。