BSD
此條目需要補充更多來源。 (2019年1月18日) |
柏克萊軟件套件(英語:Berkeley Software Distribution,縮寫:BSD;也被稱為柏克萊Unix或Berkeley Unix)是一個衍生自Unix(類Unix)的作業系統,1970年代由柏克萊加州大學的學生比爾·喬伊開創,也被用來代表其衍生出的各種套件。
開發者 | 電腦系統研究小組 |
---|---|
程式語言 | C |
作業系統家族 | Unix |
運作狀態 | 停止 |
原始碼模式 | 最初可獲得原始碼,後來開放原始碼 |
首次釋出 | 1977年 |
目前版本 |
|
支援的語言 | English |
支援平台 | PDP-11, VAX, Intel 80386 |
內核類別 | 單體內核 |
用戶空間 | BSD |
預設用戶介面 | Unix shell |
特許條款 | BSD |
BSD特許條款非常地寬鬆,因此BSD常被當作工作站級別的Unix系統,許多1980年代成立的計算機公司都從BSD中獲益,比較著名的例子如DEC的Ultrix,以及Sun公司的SunOS。 1990年代,BSD大幅度被System V 4.x版以及OSF/1系統所取代,但其開源版本被用在互聯網的開發。
歷史
編輯PDP-11開始
編輯最初的Unix套件源自1970年代的貝爾實驗室,作業系統中包含原始碼,這樣研究人員以及大學都可以參與修改擴充。1974年,第一個柏克萊[註 1]的Unix系統被安裝在PDP-11機器上,電腦科學係而後將其用作擴展研究。
其他大學開始對柏克萊的軟件感興趣,在1977年,柏克萊的研究生比爾·喬伊將程式整理到磁帶上,作為First Berkeley Software Distribution(1BSD)發行。 1BSD被作為第六版Unix系列,而不是單獨的作業系統。主要程式包括Pascal編譯器,以及比爾·喬伊的ex行編輯器。
Second Berkeley Software Distribution(2BSD)於1978年發佈,除了對1BSD中的軟件進行升級,還包括了比爾·喬伊寫的兩個新程式:vi文字編輯器(ex的可視版本),以及C Shell。這兩個新添的程式,在Unix系統中至今仍被使用。
2BSD以後的版本逐漸從PDP-11結構向VAX計算機移植。最新的2.11BSD於1992年發佈,更新維護一直持續到2003年。
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公司後的第一個版本,自那時起馬紹爾·克爾克·麥庫錫克和Mike Karels和一直負責領導該項目。值得一提的是,這次BSD小惡魔正式出場,最初是馬紹爾·克爾克·麥庫錫克的畫作,出現在列印好的文件封面上,由USENIX發行。
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就是內華達州的賭城雷諾。
Net/2以及法律問題
編輯Net/1以後,Keith Bostic提議,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構架上兩種移植版的主要組成部分,包括由威廉·喬利茨負責,自由的386BSD;以及專屬的BSD/OS,由Berkeley Software Design(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更加豐富了這塊土壤。
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
- 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 工作站的第一波熱潮。
註釋
編輯參考文獻
編輯外部連結
編輯延伸閱讀
編輯- Marshall Kirk McKusick,《Open Sources: Voices from the Open Source RevolutionOpenSources》(頁面存檔備份,存於互聯網檔案館)(影印版)
- 柏克萊Unix二十年——從AT&T獨有,到可自由發佈 《Twenty Years of Berkeley Unix - From AT&T-Owned to Freely Redistributable(頁面存檔備份,存於互聯網檔案館)》(O'Reilly & Associates ,2003年,ISBN 7-302-06591-8