FreeBSD連載(03):其他相關系統和組織

1999年11月5日 14:46 王波

其他相關系統和組織

  自由使用和免費是FreeBSD的特征,在英文裡都可以使用 “free” 來表示。這表示使用者不僅僅可以 免費使用這個系統,還可以對軟體進行適合自己需要的改動,並能夠影響這個軟體的發展等等,這正是free這個詞更深一 層的含義。

  支持自由軟體的人通常認為,每個電腦的使用者都有自己特定的需要,不可能有一個包羅萬象、適合所有需求的軟 件系統。因此軟體開發者和系統管理員希望了解軟體內部的情況,以便可以對軟體進行定制和擴展。而商業軟體只提供軟體的 二進制代碼,將軟體內部的操作完全封閉起來,使用者就喪失了對軟體的主動權。另外,任何軟體產品都存在各種BUG,商 業軟體的使用者在遇到軟體產品的這些問題時,就只能被動的等待廠商的補丁程序,整個軟體系統不得不停頓或冒一定的風險 繼續使用。第三,電腦的使用者並不會完全信賴商業軟體,某些軟體廠商會故意在軟體中加入惡意代碼,或加入某種未公開 的後門,對使用者造成危害。即使這些軟體中的後門或惡意代碼是打著防止盜版、提供更方便的功能等旗號加入的,但也可能 被偶然觸發,危害使用者的利益。而在提供軟體原始碼的軟體中,就不會存在這種惡意的行為。

  這些問題對於一個普通用戶或者不重要,但對於一個較大的系統或要求較高安全性的系統中,就能表現出重要性了。 支持自由軟體的人認為,如果一個軟體提供了原始碼,那麼使用者就能根據情況自己修改或請他人修改軟體,從而適合自己的 最終需要,並修正系統中因為有意或無意導致存在的問題。目前,開放原始碼已經得到越來越多的電腦使用者和廠商的認可 ,他們組成了開放原始碼組織(Open Source),來進一步推動這個思想。

  另一方面,由於某些種類的商業軟體中不存在競爭,壟斷的結果就造成軟體的價格昂貴,使得這些軟體不是任何有需 要的人都能夠用得起的。而軟體最大的價值是被人使用,因此有很多人認為軟體開發者要允許別人使用他的軟體,應該從軟體 服務中獲得收益,而不是從軟體本身中謀取暴利。他們認為電腦應該屬於大眾,而不應該由某些公司壟斷。因此這些崇尚自 由軟體的人員就想為所有用戶開發一整套系統,使用戶在現有商業軟體之外還可以進行選擇,而不至於必須為商業軟體支付額 外的費用。這些人包括FreeBSD的開發人員、Linux的開發人員、GNU計劃的開發人員以及其他眾多的自由軟體 開發者,他們開發的軟體構成了電腦領域內多姿多彩的一面,使得即使不使用任何商業軟體,使用者也同樣能夠在電腦上 以更好的性能完成所有的工作。

  • GNU's Not Unix

GNU不是Unix,採用這種遞歸方式定義的GNU計劃是由Richard Stallman提出的,他建立自由軟體基金會(FSF)並提出GNU計劃的目的是開發一個完全自由的,與Unix類似但功能更強大的操作系統,以便為所有的電腦使用者提供一個功能齊全,性能良好的基本系統。GNU HURD為GNU操作系統的核心,但是目前還沒有正式發布,仍處於測試階段。很多人使用Linux核心和GNU的應用軟體組成了GNU/Linux系統。右圖為GNU的標志。

  FSF開發了大量的自由軟體來達到這個目的,這些軟體與Unix上原有的軟體功能相同,但由於GNU開發軟體 的時候硬體的處理能力更強了,因此GNU軟體充分利用電腦的硬體能力,比Unix中的同樣的軟體功能更強,因此非常 流行。這些軟體在GNU通用公共許可的保護下允許任何人免費使用和傳播(但必須同時提供源程序),因此被大量的用在其 他的Unix中,FreeBSD上也提供了很多GNU軟體。

  Stallman創造了一個詞copyleft,由於通常意義上的版權copyright是用來限制別人在沒 有許可的條件下不能使用和傳播軟體,而copyleft則鼓勵任何人可以使用和傳播軟體。copyleft限制妨礙使 用和傳播GNU軟體的行為,例如不提供GNU軟體的原始碼。然而copyleft與copyright並不衝突,因為 copyleft是針對軟體的傳播者而非針對最終使用者的。GNU軟體必須使用copyleft保護,限制將GNU軟 件本身用於牟利目的,而其他軟體仍然可以使用copyright保護版權不被侵犯。Stallman進一步使用GNU 通用公共許可來詳細闡述copyleft的觀念,要求傳播GNU軟體必須同時傳播其原始碼。由於GNU通用公共許可十 分流行,因此很多非自由軟體基金會的自由軟體也使用GNU通用公共許可來保護自己軟體,不被商業公司用於獲利。

  GNU軟體許可相當寬松,有很多公司利用GNU軟體進行商業活動,但只要同時提供了GNU軟體的原始碼,就沒 有違反GNU軟體許可。

  FreeBSD本身是在BSD許可的保護下,BSD許可權與GNU通用公共許可略有不同,一些方面的限制甚至 更為寬松。GNU通用公共許可要求傳播(包括銷售)任何符合GNU軟體應該包括原始碼,反對利用保守GNU軟體的源代 碼的方式牟利,而BSD許可則允許以二進制形式發布軟體,對於某些不打算公開原始碼的商業運用並沒有進行限制。

  • GNU/Linux

  FreeBSD並不是唯一的免費 “Unix” 操作系統,也不是最流行的Unix系統,這個榮譽屬於Lin ux。這主要由於Linux出現得早兩年,那時BSD的原始碼還受AT&T許可權的限制,不能自由獲得,而I ntel的32位處理器386的普及已經使Internet上諸多Unix愛好者對PC平台上的免費Unix系統提出 了需求,Linux應時而生。近來在Netscape等商業公司的倡導下,Linux得到眾多商業公司的支持,無形中 成為了反Microsfot聯盟的一杆旗幟,聲勢更為浩大。

  Linux是由芬蘭人Linus Torvalds編寫的Unix兼容系統。由Linus Torvalds 負責核心開發和維護,其他組織和商業公司負責將Linux的核心和應用程序組織在一起發布,由於大部分程序為GNU軟 件,因此更嚴格的說Linux應該被稱為GNU/Linux。目前流行的Linux版本有slackware 3.6 ,Debian 2.0,RedHat 5.1等。

  Linux和FreeBSD同為英特爾平台上的Unix操作系統,因此有很多相似之處。幾乎所有的自由軟體都 同時支持Linux和FreeBSD,因此在應用方面他們也很相似。但Linux和FreeBSD也有相當大的不同之 處,可以說各具特色。

  從歷史淵源上講,FreeBSD繼承了BSD Unix的代碼,因此代碼相當成熟和穩定。而Linux是一個 全新的系統,是遵循POSIX規范開發的一個獨立操作系統,但又提供了與BSD Unix或Unix System V的兼容性。因此Linux完全沒有受到1992年的AT&T訴訟的影響,結果成為了最流行的自由操作系統。 雖然今天那次法律糾紛已經解決,4.4BSD Lite的代碼可以自由獲得,但FreeBSD的使用者仍要少於Lin ux的使用者,FreeBSD的使用者多數為網路和電腦專業人士,普及程度較低。

  出於這個歷史淵源的原因,FreeBSD是一個完整的系統,從系統核心到系統提供的程序均來自BSD Uni x,部分GNU軟體是用於代替BSD Unix中的一些老版本軟體。而Linux僅僅只是一個操作系統的核心,其應用 程序大部分為GNU軟體,然後由不同的組織或個人將這些GNU軟體與Linux核心整合在一起的。因此就存在多個不同 的Linux版本,而且不同的Linux版本使用不同的組合方式,因此各種Linux版本之間有很大的差異,並且可以 預計這些版本會隨著發展進一步增大彼此的差異。而FreeBSD的版本比較整齊清晰,只有一個FreeBSD版本。

  通常FreeBSD更關心穩定性,而Linux具備的各種新特性更多。由於Linux得到了更多的商業公司支 持,因而Linux下的商業軟體也更多。但是這些商業軟體均可以通過FreeBSD對Linux執行檔案的支持,也能 夠運行在FreeBSD上。這個不同主要是由於Linux和FreeBSD的開發過程的差異造成。

  雖然FreeBSD和Linux的開發過程都是非常開放的方式,每個開發者獨立進行自己的工作,通過Inte rnet來互相交流。任何對系統開發有興趣的人都能貢獻新的想法,並組建一個開發隊伍或加入現有開發隊伍將自己的想法 實現。但是FreeBSD與Linux開發方式的不同是,FreeBSD有一個開發者組成的核心小組(FreeBSD core team)對整個FreeBSD負責。任何人都可以利用FreeBSD提出自己的開發計劃,但只有Free BSD核心小組認為這個計劃對整個FreeBSD發展有益,這個計劃才能列入FreeBSD計劃本身。所有的Free BSD開發者共享同一個原始碼樹,使用並發版本維護工具CVS進行維護。有了FreeBSD核心小組從整體上規劃Fr eeBSD,並邀請其他開發者加入核心小組,因此FreeBSD顯的更簡潔和干淨,版本發展也比較穩定。而Linux 僅由Linus對核心進行維護,任何人都可以組織自己的計劃,貢獻自己的代碼,沒有一個統一的原始碼樹,只是在最後由 Linus進行整合和發布正式核心。由於沒有嚴格的控制,並且Linux的開發者很多,因此Linux中雖然有更多的 新特性,卻顯得略為雜亂,並且有些新特性的代碼沒有經過時間驗証,可能存在有問題。

  一個新功能沒有進入FreeBSD正式版本的原因很多,有的是由於這個功能不夠成熟,有的是由於核心小組認為 這個特性意義不大,還有的是因為正式核心已經有類似功能,或者由於專利或版權問題(例如,該軟體的作者不打算讓該軟體 成為自由軟體),使得十分成熟的功能也不能被列入正式發行的版本。

  由於Linux和FreeBSD互為競爭對手,在Internet上關於Linux和FreeBSD的爭論很 多,然而這種爭論一般不會得到什麼明顯的結果。事實上他們都能完成各種應用需求,但各有自己的側重點,至於那種系統最 適合自己,需要根據具體情況而定,使用者的個人喜好也是影響選擇的一個重要因素。一般FreeBSD的使用者也曾經( 或同時)是Linux的使用者,然而有Linux的使用經驗對學習和使用FreeBSD也有不少幫助。只有競爭才能促 進發展,Linux和FreeBSD不但是競爭的關系,也是相互學習的關系,只有如此各自才能不斷發展。

  在作者個人的使用經驗中,FreeBSD僅有過一次崩潰,並且這種崩潰不是隨機出現的,其原因是使用了所有優 化選項來編譯核心,編譯器某項優化造成了核心的BUG,結果就在執行某項操作時就被觸發。在降低了優化級別之後,問題 就消失了。因此這個問題應歸結為編譯器的問題而非核心的問題。在Linux中,問題更為嚴重一些,過於求新求功能的多 樣性,使得系統崩潰更頻繁,並且很多系統崩潰無法找到原因。

  注意:系統崩潰和系統死鎖不同,一些情況下一些應用軟體死鎖會造成鍵碟或顯示沒有響應,然而仍然可以通過網路 或其他終端設備登錄進系統殺死死鎖進程。例如在FreeBSD下執行Linux的X Server時,進行切換虛擬控 制台的操作就會導致鍵碟死鎖。

  目前Linux的一個發展熱點是各個商業公司的參與,這的確豐富了Linux下的軟體。然而另一方面,商業公 司也試圖把專有設計引入Linux,將原有開放的環境變為商品化的環境,以便從中牟利。目前不同版本的Linux之間 的差異已經相當大了,很多人已經意識到了Linux面臨的分裂危險,可以想象以後某個版本的Linux會與其他版本存 在兼容性問題。而FreeBSD有統一的原始碼樹,不存在分裂的問題。

  • 其他BSD系統

  商業版本的BSD/OS也是一個非常優秀的操作系統,它是由原BSD Unix的部分開發人員組成的BSDI 公司的產品。由於存在商業支持,因此在某些方面具備免費的FreeBSD不具備的優勢。例如某些硬體廠家不願意公開自 己的硬體資料(或者是有條件的公開),因而使得FreeBSD無法支持他們的硬體,而他們可以為BSDI提供資料以供 開發驅動程序。一些不能理解自由軟體、要使用FreeBSD不支持但BSDI支持的硬體,或對服務和技術支持提出較高 要求的使用者,可以選擇使用BSDI。

  NetBSD和OpenBSD也是基於4.4BSD的自由Unix操作系統,可以算是FreeBSD的兄弟。 甚至在最初,NetBSD和FreeBSD的大部分開發者都完全相同,同樣的開發者同時為兩個系統進行開發。而開發者 和使用者都是將這兩個系統作為BSD Unix在不同硬體平台的實現來看待的,FreeBSD用於Intel平台,而 NetBSD用於多硬體平台,主要用於RISC工作站硬體。隨著兩個系統的不斷發展,兩者逐漸相分離,而OpenBS D是從NetBSD分出的一個分支。但FreeBSD是為個人電腦平台設計的,後來才嘗試移植到其他平台上(已經有 Alpha和Sparc芯片下的FreeBSD系統,但還不十分成熟),因此更適合個人電腦用戶,而NetBSD和 OpenBSD一開始就設計為能夠運行在多系統平台上,包括各種RISC工作站,因而NetBSD和OpenBSD的 使用範圍就更窄一些。

  以上這些BSD Unix系統的使用數量要少於FreeBSD系統。FreeBSD由於專注於Intel平台 ,支持Intel平台上的硬體種類最多,並對易用性作了很大改善,因而使用範圍更廣泛,是最常見的BSD Unix系 統。但是由於這些系統同屬BSD來源,在開發過程中常常相互交流,因此使用方法和管理基本相同。在FreeBSD、N etBSD、OpenBSD之間進行選擇的決定性因素常常是安裝BSD系統的硬體平台。