FreeBSD連載(01):FreeBSD的起源

1999年11月3日 17:19 王波

  

第1章 引言

  在電腦領域,Unix一直是作為高端平台而出現的。幾年以前,只有在大型機構的專用機房中才能接觸到它們, 甚至稍小一些的機構也負擔不起購買Unix工作站的費用。只有很少的使用者才有機會接觸和使用Unix,能管理和維護 Unix系統的電腦專業人員就更少了,這就使得Unix總是披著一層神秘的面紗,在普通使用者面前,Unix屬於一 種難於使用、十分昂貴的操作系統。然而,當運行在個人電腦上的自由Unix系統出現之後,這種情況已經改變了。

  事實上,今天的Unix已經不能說是一個單一的操作系統,它包括了非常多的種類,有高端的HP、SUN伺服器 ,也有中、低端的運行在Intel平台上的Unix系統。Unix不再是普通使用者可望而不可及的操作系統了,每個喜 愛Unix的人都可以在自己的PC機中安裝上一套Unix系統,學習它、使用它。而中小企業也可以使用PC伺服器來運 行Unix系統,充分利用Unix系統的強大處理能力。

  FreeBSD就是一種運行在Intel平台上、可以自由使用的Unix系統,它可以從Internet上免 費獲得。而它又具備極其優異的性能,使它得到了電腦研究人員和網路專業人士的認可。因此,不但專業科研人員把它用作 個人使用的Unix工作站,很多企業,特別是ISP(Internet服務提供商)都使用運行FreeBSD的高檔P C伺服器來為他們的眾多用戶提供網路服務。

  

  • FreeBSD的起源

  自從1969年AT&T Bell實驗室研究人員創造了Unix之後,Unix就不斷發展,逐漸成為 了主流操作系統。雖然目前Windows系列已經占據了桌面電腦的領域,其中Windows NT伺服器也在網路服 務器領域得到了部分用戶的承認,但在高檔工作站和伺服器領域,Unix仍然具有無可替代的作用。尤其在用作Inter net伺服器方面,Unix的高性能、高可靠性、以及高度可擴展的能力仍然不是其他操作系統所能夠代替的。

  雖然Unix由AT&T創造,但它如此流行卻並不能完全歸功於AT&T自己的功勞。現代Un ix不是一個廠家的單獨產品,在它長期的發展過程中形成了多種不同的版本。惟其豐富多樣,才使得Unix具有強大的生 命力。FreeBSD正是Unix眾多分支中相當優秀的一支,它的發展歷史也相當悠久,是著名的BSD Unix的一 個繼承者,因此要了解FreeBSD發展的歷史,首先就要了解Unix發展的歷程。

  

  • Unix的歷史發展
  •   

      Unix操作系統的歷史漫長而曲折,它的第一個版本是1969年由Ken Thompson在AT& T貝爾實驗室實現的,運行在一台DEC PDP-7電腦上。這個系統非常粗糙,與現代Unix相差很遠,它只具有操 作系統最基本的一些特性。後來Ken Thompson和Dennis Ritchie使用C語言對整個系統進行了再 加工和編寫,使得Unix能夠很容易的移植到其他硬體的電腦上。從那以後,Unix系統開始了令人矚目的發展。

      由於此時AT&T還沒有把Unix作為它的正式商品,因此研究人員只是在實驗室內部使用並完善它。正 是由於Unix是被作為研究項目,其他科研機構和大學的電腦研究人員也希望能得到這個系統,以便進行自己的研究。A T&T以分發許可証的方法,對Unix僅僅收取很少的費用,大學和研究機構就能獲得Unix的原始碼以進行研 究。Unix的原始碼被散發到各個大學,一方面使得科研人員能夠根據需要改進系統,或者將其移植到其他的硬體環境中去 ,另一方面培養了懂得Unix使用和編程的大量的學生,這使得Unix的普及更為廣泛。

      由於操作系統的開發相當困難,只有少數的電腦廠商,如IBM、Digital等大型公司,才擁有自己的操作 系統,而其他眾多生產電腦的硬體廠商則採用別人開發的操作系統。因為Unix不需要太多的花費,因此很多廠商就選擇 了Unix作為他們生產的電腦使用的操作系統。他們把Unix移植到自己的硬體環境下,而不必從頭開發一個操作系統 。

      到了70年代末,在Unix發展到了版本6之後,AT&T認識到了Unix的價值,成立了Unix系 統實驗室(Unix System Lab,USL)來繼續發展Unix。因此AT&T一方面繼續發展內部使 用的Unix版本7,一方面由USL開發對外正式發行的Unix版本,同時AT&T也宣布對Unix產品擁有 所有權。幾乎在同時,加州大學伯克利分校電腦系統研究小組(CSRG)使用Unix對操作系統進行研究,因此他們的 研究成果就反映在他們使用的Unix中。他們對Unix的改進相當多,增加了很多當時非常先進的特性,包括更好的內存 管理,快速且健壯的檔案系統等,大部分原有的原始碼都被重新寫過,以支持這些新特性。很多其他Unix使用者,包括其 他大學和商業機構,都希望能得到CSRG改進的Unix系統。因此CSRG中的研究人員把他們的Unix組成一個完整 的Unix系統──BSD Unix(Berkeley Software Distribution),向外發行。

      BSD Unix在Unix的歷史發展中具有相當大的影響力,被很多商業廠家採用,成為很多商用Unix的基 礎,而AT&T與其同時存在的Unix版本的影響就小得多。同時很多研究項目也是以BSD Unix為研究系 統,例如美國國防部的項目─ARPANET,ARPANET今天發展成為了Internet,而BSD Unix中最 先實現了TCP/IP,使Internet和Unix緊密結合在一起。

      而AT&T的Unix系統實驗室,同時也在不斷改進他們的商用Unix版本,直到他們吸收了BSD Unix中已有的各種先進特性,並結合其本身的特點,推出了Unix System V版本之後,情況才有了改變。從 此以後,BSD Unix和Unix System V形成了當今Unix的兩大主流,現代的Unix版本大部分都是 這兩個版本的衍生產品。

      Unix的版本號表示方式比較複雜,各種不同的Unix版本有自己的版本標識方式,如最早AT&T開 發的內部Unix使用簡單的順序號來標識版本,從V 1到V 7。

      BSD使用主版本加次版本的方法標識,如4.2BSD,4.3BSD,在原始版本的基礎上還有派生版本,這些 版本通常有自己的名字,如4.3BSD-Net/1,4.3BSD-Net/2。

      AT&T使用羅馬數字來標識他們的對外發布的Unix版本,用Release來表示次版本。如Sys tem V Release 4(簡寫為SVR4)標識AT&T的Unix System V的第四次發布的 版本。

      其他商業公司的Unix使用自己的版本標識,如Sun的Solaris 2.6,IBM的AIX 4.0等。

      雖然AT&T的Unix System V也是非常優秀的Unix版本,但是BSD Unix在Un ix領域內的影響更大。AT&T的Unix系統實驗室一直關注著BSD的發展,在1992年,Unix系統實 驗室指控BSDI── 一家發行商業BSD Unix的公司,違反了AT&T的許可權,發布自己的Unix版 本,並進一步指控伯克利電腦系統研究組泄漏了Unix的商業機密(此時的4.3BSD中來自AT&T Un ix的代碼已經不足10%)。這個官司影響了很多Unix廠商,使他們不得不從BSD Unix轉向Unix Sys tem V,以避免法律問題。以至於當今大多數商業Unix版本都是基於Unix System V的。

      這件有關Unix版權的案子直到Unix系統實驗室被AT&T賣給了Novell公司後才得以解決, Novell不打算陷入這樣的法律紛爭中,因此就採用了比較友好的做法。伯克利的CSRG被允許自由發布BSD,但是 其中來自於AT&T的代碼必須完全刪除。因此CSRG就對他們最新的4.4BSD進行了修改,刪除了那些來自 於AT&T的原始碼,發布了4.4 BSD Lite版本(該系統是不完整的,尤其對於英特爾386體系的計 算機系統)。由於這個版本不存在法律問題,4.4BSD Lite成為了現代BSD系統的基礎版本。

      Novell的比較友善的做法還不止對BSD,他把自己的Unix改名為Unixware, 而將Unix商 標贈送給X/Open── 一個由眾多Unix廠家組成的聯盟,這樣這個聯盟內的所有成員均可使用Unix商標。從此 之後,Unix不再是專有產品了。後來Novell由於自身的經營問題,又將Unixware賣給SCO公司。同時, 由於BSD系統已經十分成熟,作為對操作系統進行研究的目標已經達到,伯克利電腦系統研究組(CSRG)在發布了4 .4BSD-lite2之後就解散了,小組的科研人員有些進入了Unix商業公司,有些繼續進行其他電腦領域的研究 。此時,嚴格意義上的Unix System V和BSD Unix都不復存在了,存在的只是他們的各種後續版本。

      回顧Unix的發展,可以注意到Unix與其他商業操作系統的不同之處主要在於其開放性。在系統開始設計時就 考慮了各種不同使用者的需要,因而Unix被設計為具備很大可擴展性的系統。由於它的源碼被分發給大學,從而在教育界 和學術界影響很大,進而影響到商業領域中。大學生和研究者為了科研目的或個人興趣在Unix上進行各種開發,並且不計 較金錢利益,將這些源碼公開,互相共享,這些行為極大豐富了Unix本身。很多電腦領域的科學家和技術人員遵循這些 方式,開發了數以千計的自由軟體,包括FreeBSD在內。正因為如此,當今的Internet才如此豐富多採,與其 他商業網路不同,才能成為真正的全球網路。開放是Unix的靈魂,也是Internet的靈魂。

      由於Unix的開放性,另一方面就使得存在多個不同的Unix版本。由於不同的Unix使用稍有差別的檔案、 目錄結構,提供略有不同的系統調用,因此對系統管理、以及為Unix開發可移植的應用程序帶來一定的困難。例如Sys tem V和BSD的很多系統調用就存在不同。在Unix歷史發展中也存在將Unix完全統一的努力,例如POSIX 規范就是各個Unix廠商經過協商,達成的Unix操作系統應該遵循的一套基本系統調用的規定。然而由於存在多個Un ix系統,各個廠商的意見很不統一,因此POSIX規范制定的很寬松,甚至Windows NT中也存在一個POSI X子系統。事實上,只要各個Unix之間協調發展,不故意為了商業目的而人為的制造系統差異,就能夠保持各個Unix 之間不致具有太大的差別,保持Unix系統的多樣性比只有唯一的一個Unix系統更能夠促進技術的進步和發展,企圖人 為的統一Unix的想法只能是某一個Unix廠商的一廂情願。

      有時為了避免法律糾紛,表明自己的程序代碼是完全重寫的,一個軟體廠商會故意將一些函數聲明的與其他系統的中 的同類函數不同,例如使用不同的函數參數或改變函數參數的順序等。Unix System V中的很多系統調用與BS D Unix不同的部分原因也在於此。這些差異人為造成了不同系統的源程序的差異。

      

  • FreeBSD的起源和發展
  •   Unix的魅力不僅在於其功能的強大性,還在於其優秀的可擴展性,它提供了高級語言C和各種解釋語言 可用於編寫程序。利用這些系統提供的工具,使用者就能按照自己的需要和興趣對原有系統進行擴展,滿足相當一部分電腦 研究人員和使用者的需要,這樣Unix就具備更強大的能力,完成各種複雜的任務。一旦用熟了Unix,體會到Unix 的強大功能,使用者就會希望一直使用它,而不是僅具備有限能力的其他電腦系統。企業也希望能在其可以承受的條件下, 利用Unix系統的強大處理能力。

      由於Unix是多用戶操作系統,作為系統的普通使用者只能使用系統提供的有限功能,而只有Unix系統管理員 才能充分利用其的全部能力。因而擁有自己的Unix系統也是一個普通Unix使用者的願望。但是在那些時候,能夠滿足 這些願望的電腦並不是每個人都能買得起的。昂貴的硬體,以及Unix逐漸商業化趨勢,都使得擁有自己的Unix對大 多數人只是美好的願望,而使用Unix的地方主要為一些要求較高的科研和大中型公司機構。

      到80年代,個人電腦的出現,使得硬體的價格能被個人和小企業接受了,給擁有一個Unix系統的願望帶來了 一線曙光。但是使用8086芯片的個人電腦能力比較差,在其上不能實現真正正常工作的多用戶系統。進入九十年代之後 ,英特爾公司推出的80386芯片使個人電腦的計算能力大大提高,在個人電腦上構建一個可以真正使用的Unix也 成為了可能。

      事實上此時能運行在X86平台上的Unix相當有限,Mircosoft的Xienx是一種(後來發展成為S CO Unix),但不能指望能自由、免費使用這個商用系統。要移植Unix到PC平台上便需要Unix的原始碼,而 此時受AT&T的許可權的限制,Unix代碼還不能被自由獲得(但在BSD與AT&T的法律糾紛之後 的4.4 BSD Lite不再受這個限制了,可以在BSD許可下自由使用)。很多電腦愛好者為了實現一個可以自由 使用的操作系統,不但進行著努力。自由軟體基金會的GNU計劃的目的就是打算創建一個自由的、與Unix類似的操作系 統,為了實現這個目的,GNU開發了很多非常有效的工具、包括編譯器和很多系統命令,然而GNU計劃中的操作系統核心 ──HURD,卻進展緩慢,從而無法構建一個完整的操作系統。很快,就有電腦愛好者開始考慮在個人電腦平台上構建 一個Unix核心。芬蘭一位電腦研究生Linus Torvalds開始了這個工作,他通過學習Minix──一個 用於教學目的的簡單Unix系統,在x86平台上構建了Linux核心,這個核心和GNU的系統工具結合起來,取得了 相當大的成功,成為目前非常流行的GNU/Linux系統。

      與這些努力相比,BSD方面的研究人員的行動則比較遲緩,一個原因是Unix技術上已經相當成熟,電腦系統 研究組的大部分成員已經把注意力轉向了其他研究項目,另外AT&T與BSD的法律紛爭也使得BSD發展受到了 阻礙。但是還是有兩個將BSD移植到80386平台的開發工作同時進行,一個是BSD/386小組,他們的研究結果為 商業版本的BSD/OS,屬於商業公司BSDI。另一個就是386BSD計劃,後來發展成為FreeBSD。

      CSRG研究人員的條件比較優越,擁有足夠的Unix系統,因此對個人電腦平台上的Unix系統沒有太急迫 的要求。

      386BSD計劃由Bill Jolitz等研究人員發起,將4.3BSD Net/2移植到80386平台 上,並使用386BSD的名稱發布。但是移植工作是一個複雜的任務,直到386BSD 0.5版本,系統中仍然存在相 當多的問題沒有解決。於是在1993年,另一些研究者決定加入這個計劃,打算和Bill Jolitz一起修正系統中 存在的問題。但是這時計劃的組織者Bill Jolitz突然決定退出,使得386BSD計劃面臨停止的危險。Bil l Jolitz作為計劃的發起者和負責者並沒有對這個計劃以後該如何發展給出具體意見,因此386BSD計劃是到此 為止還是繼續發展,就取決於其他開發者的決定。幸運的是,該項目的另三個參與者Nate Williams, Rod Grimes和Jordan K. Hubbard決定繼續這項非常有意義的工作,他們採用由David Green man創造的名字FreeBSD作為系統的新名字,從此有了一種任何人都可以自由使用的Unix操作系統 ── Fr eeBSD。

      
      BSD Unix使用 一個神話中的精靈形象作為其吉祥物,這個吉祥物標志被FreeBSD、NetBSD繼續使用,但不同BSD系統的精靈 略有不同,右圖為FreeBSD的BSD精靈形象。當用戶瀏覽Internet時,會在很多與FreeBSD相關的網 站上看到這個可愛的精靈標志。

      1993年12月對於FreeBSD來講是非常重要的日子,FreeBSD 1.0版本於這個月正式發布。這 次FreeBSD的開發者找到了一家出版商Walnet Creek提供支持,來發布FreeBSD的光碟和提供高速 Internet網路服務,使得任何人都可以通過購買光碟或者通過Internet下載的方法,自由獲得FreeBS D系統,使得FreeBSD取得了很大成功。而Walnet Creek也使用FreeBSD建成了Internet 上最大、最繁忙的匿名檔案伺服器──ftp.cdrom.com。

      FreeBSD雖然可以自由獲得,然而BSD與AT&T的法律糾紛仍然威脅著FreeBSD系統的合 法性。就在FreeBSD得到相當多用戶歡迎的時候,Unix系統實驗室(此時已經賣給了Novell)與伯克利計算 機系統研究小組的法律紛爭有了結論。雖然最後不必進行賠償,但是BSD Unix系統中必須去除原來來自AT& ;T的源碼。伯克利電腦系統研究小組去除了這些不到10%源碼,發布了4.4BSD Lite,其他基於BSD的U nix,包括FreeBSD在內,都被要求立即轉換到4.4 BSD Lite上去。

      這對FreeBSD是一次相當嚴重的打擊,雖然4.4 BSD Lite只刪除了一小部分代碼,但尤其對於英 特爾80386平台,缺乏這些代碼,系統就不能正常運轉。FreeBSD小組必須解決兩個任務,首先是將FreeBS D從原本的4.3BSD遷移到4.4BSD上,再將刪除的源碼完全重寫。這些任務相當於將4.4BSD Lite重新 移植到80386上,因此這花費了FreeBSD核心小組很大的精力。因此直到1995年1月他們才發布了FreeB SD 2.0,這次就是一個完全的4.4BSD Lite的系統了。但是在大約一年時間之內,FreeBSD不能在原 有1.0基礎上進行改進並推出新版本,而這個時期正是Internet進一步發展的階段,FreeBSD錯過了一個發 展壯大的好時機。而其競爭對手,如Linux,則取得了巨大的成功。

      接下來,FreeBSD加快了開發節奏,2.1、2.2、3.0相繼推出,這個系統在Internet上的應 用也越來越多,尤其是對於要求高性能、高可靠性的網路伺服器系統,FreeBSD提供了一個極具誘惑的選擇。

      由於Unix商標屬於X/Open組織,而FreeBSD只是一個自由操作系統,從法律角度上看FreeBS D不能被叫作Unix(不能使用Unix做商標)。但是基於Unix本身的歷史,FreeBSD可以算最原汁原味的U nix,在有的方面,它更具傳統特色──或者說BSD Unix的學院特色。目前,Unix商標其實是只具有象征性的 含義,沒有人介意到底那些系統是X/Open的成員,可以被稱作Unix,那些不是。Unix已經成為一個廣泛的概念 ,只要是按照Unix為模板進行開發,所有的應用程序在C源程序級與其他Unix相互兼容,也同樣被所有使用者承認為 Unix系統。因此這裡的Unix包括BSD和System V在內的各種系統,也包括像Linux這樣的兼容系統。

      

  • 目前FreeBSD的版本
  •   由於FreeBSD十分關心系統的性能和穩定性,同時FreeBSD的開發又非常活躍並十分開放。因此在系統 開發中支持幾個版本的FreeBSD系統並行發展,一些版本用於提供一個最具穩定性的操作系統,另一些版本逐漸融合進 各種新特性,使FreeBSD不斷發展。目前主要使用的FreeBSD有三個分支版本:

      FreeBSD2.2.x-stable:這個分支是目前Internet上大部分網路伺服器上使用 的FreeBSD版本,經過無數實踐驗証,具有高穩定性的特點。但是由於3.0版本已經正式發布,FreeBSD的開 發者已經於1999年1月決定停止對這個版本的開發,這個FreeBSD的分支版本進入維護狀態,將僅僅進行修補一些 可能存在的系統漏洞等工作。因此除非是現存的FreeBSD系統,或者為了特殊目的要使用一些基於2.2.x開發的特 殊軟體,新安裝的FreeBSD系統應該使用FreeBSD-3.x版本。這個系列中最後一個正式發布的光碟版本為F reeBSD 2.2.8-release。

      FreeBSD3.x-stable:這個版本的第一個正式版本3.0-release,它於199 8年10月正式發布,隨後就成為了穩定版本。它與2.2相比增加了對很多新硬體的支持,並進一步提高了性能。對於安裝 新的FreeBSD系統來講,應該選用這個版本。目前已經發布了FreeBSD 3.2-release。

      FreeBSD4.0-current:於1999年1月產生,同時FreeBSD 3.x-cur rent分支轉變為FreeBSD 3.x-stable分支。目前還沒有任何正式發布版本,需要通過Interne t獲得原始碼進行安裝。

      可以看到,FreeBSD的版本使用current或stable後綴進行修飾,其中使用stable修飾的 版本是一個穩定的版本,它不是FreeBSD的最新版本,主要關心系統的性能和使用的連續性,同一個stable分支 中的下一個版本主要是修訂系統問題,因此stable分支得到很多商業用戶的歡迎。current表示這個版本是正在 開發的版本,還不成熟,它更關心新特性,每種可能的特性都被開發者嘗試加入進FreeBSD中,但並不保証以後的正式 發布版本會支持所有的特性,一些特性會因為不成熟或對大部分用戶無益,即使曾經加入也可能從正式版本中去除。通常Fr eeBSD的愛好者和開發者使用這個分支,或者一些需要某些FreeBSD的新特性的用戶,就必須使用這個分支。

      FreeBSD選用current和stable來修飾FreeBSD不但是因為FreeBSD是一個不斷發 展、更新的系統,而且FreeBSD還是一個由Internet上的用戶參與開發、使用Internet交流開發工作 的系統。這與商業軟體不同,商業軟體的開發工作在公司內部,外界不能訪問正在開發的版本,不能對要開發的軟體發表意見 和提出建議。而FreeBSD則相反,任何人只要通過Internet,都可以訪問到FreeBSD的源碼,並且Fr eeBSD開發者鼓勵別人訪問目前正在開發的源程序,鼓勵提建議和進行自己的FreeBSD開發計劃,如果這個計劃的 確不錯,那麼這個開發者就能被邀請進入FreeBSD開發組,他的計劃就能被合並到正式的FreeBSD開發中去。但 是,如果一個系統老是處於不斷開發的過程,沒有一個穩定的版本,顯然得不利於希望將FreeBSD用在日常業務處理任 務的普通用戶。因此FreeBSD並存著兩個同時發展的版本,stable版本為穩定版本,相當於商業軟體中的對外發 行的版本,current版本為正在開發的版本。當一個current版本已經足夠穩定,這個版本就轉變為stabl e版本,而FreeBSD開發組將轉入下一個current版本的開發工作。

      除了current和stable之外,還有另外兩個後綴用來修飾FreeBSD的二進制發行版本。一個是r elease,如FreeBSD 3.0-release,表示這是一個正式發行的FreeBSD版本,但這個版本可 以處於current分支或stable分支。但如果一個FreeBSD的current分支發布了release版 本,這將表示它離進入stable狀態不遠了,此後該版本實際上不會再作太大的改動,已經是一個完全可用、足夠穩定的 FreeBSD版本了。另一個後綴是snapshot,如FreeBSD 4.0-snapshot,表示這是一個預 覽版本,用於FreeBSD愛好者提前查看current分支目前的開發狀態,嘗試新特性用的。FreeBSD的光碟 發行版本常常使用這兩個詞進行修飾。

      因此對於FreeBSD用戶,需要根據情況選擇使用不同的版本。對於正式使用,應該選擇stable版本,而 對於進行學習、研究、開發FreeBSD,可以考慮使用current版本。