開源作業系統的類別及其特點

2020-07-16 10:04:38
我們說過,由於有大量的開源作業系統,作業系統的學習容易得多。

開源作業系統(open-source operating system)具有原始碼,而非只有編譯過的二進位制碼。Linux 是最為著名的開源作業系統,而 Microsoft Windows 則是一個著名的、閉源(closed source)的系統。Apple 公司的 Mac OS X 和 iOS 作業系統採用一種混合方式。它們有開源的核心,稱為 Darwin,也有閉源的專用元件。

從原始碼可以生成二進位制碼,以便在系統上執行。而反著乾,即從二進位制碼到原始碼的逆向工程(reverse engineering),則很費力,並且也無法恢復一些有用資訊,如注釋。通過閱讀原始碼學習作業系統還有很多好處。有了原始碼,學生可以修改作業系統,再編譯和執行原始碼,觀察修改結果,這是很好的學習方式。

除了從高層上描述演算法以覆蓋所有作業系統的主題外,本教學還有一些涉及修改作業系統原始碼的專案,教學中將會指出一些原始碼,以供深入學習。

開源作業系統具有許多好處,包括一群感興趣的(通常無報酬的)程式設計師來幫助偵錯、分析、支援和建言等。可以說,開原始碼比閉原始碼更為安全,這是因為有更多眼睛來檢視程式碼。當然,開原始碼也有錯誤,不過開源倡導者認為,由於使用和檢視程式碼的人多,錯誤會很快被發現並加以糾正。

雖然銷售軟體以便賺取收入的公司通常不願開放原始碼,但是 RedHat 和大量其他公司卻在開放原始碼,並且從中獲利(而並未受到損失)。例如,通過提供支援或出售軟體所能執行的硬體,也能增加收入。

歷史

在現代計算初期(即 20 世紀 50 年代)時,大量軟體都是開源的。MIT 的 Tech Model Railrod Club 的最初駭客(計算機愛好者)將程式留在抽屜裡以便他人可用。“Homebrew”使用者群在開會時交換程式碼。後來,公司的使用者群,如 Digital Equipment Corporation 的 DEC,接受開源程式,匯集到磁帶,再將磁帶發到感興趣的成員。

最終,計算機和軟體公司試圖限制軟體使用,如只限於授權計算機和付費客戶。僅發布二進位制程式碼而非原始碼,可讓這些公司實現這一目標;對競爭對手來說,也保護了程式碼及其方法。

還有一個問題是關於智慧財產權的。作業系統和其他程式可以實施限制,只有授權計算機才可播放視訊和音樂、閱讀電子書等。如果實現這些限制的原始碼公開了,那麼複製保護(copy protection)和數位版權管理(Digital Rights Management,DRM)就無效了。許多國家的法律,包括美國的千禧年數位版權法案(Digital Millennium Copyright Act, DMCA)都認定 DRM 程式碼的逆向工程或試圖繞過複製保護是違法的。

為反對限制軟體使用與再發布,Richard Stallman 於 1983 年設立了 GNU 專案,以建立一個免費的、開源的、相容 UNIX 的作業系統。1985 年,他發表了 GNU 宣言,主張軟體應是免費的和開源的。他也設立了自由軟體基金會(Free Software Foundation,FSF),以鼓勵自由交流軟體原始碼和免費使用軟體。FSF 不是對軟體施加版權(copyright),而是對軟體施加著佐權(copyleft),鼓勵共用和改進。GNU 通用公共許可證(Gnu General Public License, GPL)為著佐權的條文,這是一個發行軟體的公共許可證。從根本上說,GPL 規定:軟體原始碼應與二進位制一起分布,軟體原始碼的任何修改應按同樣的GPL許可來發布。

Linux

GNU/Linux 是開源作業系統的範例。GNU 專案開發了許多與 UNIX 相容的工具,包括編譯器、編輯器及其他實用程式,但從未發布核心。1991 年,一位名叫 LinusTorvalds 的芬蘭大學生,利用 GNU 編譯器和工具,開發並行布了一個類似 UNIX 的簡單核心,並邀請大家一起開發。有了 Internet,任何有興趣的人員都可下載原始碼,可修改它,可向 Torvalds 遞交修改。每週更新一次,加上數千程式設計師的共同努力,使得這個稱為 Linux 的作業系統迅速發展起來。

這樣形成的 GNU/Linux 作業系統有數百個的不同發布(distribution)和客製化。主流的發布有 RedHat、SUSE、Fedora、Debian、Slackware 和 Ubuntu。在功能、實用程式、應用程式、硬體支援、使用者介面和用途等方面,這些發布不盡相同。

例如,RedHat Enterprise Linux 針對的是大企業的應用。PCLinuxOS 為 LiveCD,該作業系統可以從 CD-ROM 上直接引導並執行,而無需安裝到系統硬碟。一種稱為“PCLinuxOS Supergamer DVD”的 PCLinuxOS 為 LiveDVD,它包括圖形驅動程式和遊戲。玩家可以在任何相容系統上,直接從 DVD 引導並開始遊戲。遊戲結束後,系統重新引導就會回到原來安裝的作業系統。

在 Windows 系統上,執行 Linux 的簡單而且免費的方法如下:
  • 下載免費 “ VMware Player ” 工具(http://www.vmware.com/download/player/)並安裝到系統。
  • 從數百個 Linux 版本中選擇一個,或者從 VMware 網站上直接選擇一個虛擬機器映象。這些映象已安裝了作業系統和應用程式,包括各種各樣的 Linux。
  • 從 VMware Player 中引導虛擬機器。

本教學提供了一個 Debian Linux 的虛擬機器映象。該映象有 Linux 原始碼,也有軟體開發工具。本教學的有些例子,以及後續章節中的具體樣例,都會涉及這一 Linux 映象。

BSD UNIX

與 Linux 相比,BSD UNIX 的歷史要更長也更複雜。它開始於 1978 年,源自 AT&T 的 UNIX。加利福尼亞大學伯克利分校發布了它的原始碼和二進位制碼,但它不是開源的,這是因為受到 AT&T 版權的限制。BSD UNIX 的開發因 AT&T 訴訟而緩慢,不過最終一個完全可用的、開源的 4.4BSD-lite 於 1994 年得以發布。

正如 Linux 一樣,BSD UNIX 也有許多發布,如 FreeBSD、NetBSD、OpenBSD 和 DragonflyBSD 等。為了研究 FreeBSD 原始碼,只要下載感興趣版本的虛擬機器映象,並從 VMware 中引導即可,具體步驟與 Linux 相似。原始碼也一起發布,位於目錄 /usr/src 下。核心原始碼在目錄 /usr/src/sys 下。例如,為了檢視 FreeBSD 核心有關虛擬記憶體實現的程式碼,可以閱讀 /usr/src/sys/vm 中的檔案。

Darwin 為 Mac OSX 的核心核心元件,是基於 BSD UNIX 的,也是開源的。該原始碼在http://www.opensource.apple.com上,每次 MacOS X 發布的開源元件都在該網站上。包含核心包的名稱以“xnu”為開始。

Solaris

Solaris 為 Sun Microsystems 的商用的、基於 UNIX 的作業系統。最初,SUN 的 SunOS 作業系統是基於 BSD UNIX 的。1991 年,SUN 移到 AT&T 的 System V UNIX。2005 年,Sun 開源了 Solaris 的大部分程式碼,以作為 OpenSolaris 專案。不過,2009 年,Sun 被 Oracle 收購,這一專案的前景就不明朗了。2005 年的原始碼仍然還是可以通過原始碼瀏覽器看到的,也可從http://src.opensolaris.org/source下載。

對於使用 OpenSolaris 感興趣的多個組織,利用這個作為基礎,進而擴充套件功能。這個專案稱為 Illumos,目的是擴充套件基本 OpenSolaris 以增加更多功能,並應用到多個產品。Illumos 可從 http://wiki.illumos.org 得到。

用作學習的開源作業系統

自由軟體運動使得眾多程式設計師建立了數千個開源專案,包括作業系統。網站如 http://freshmeat.net/ 和 http://distrowatch.com/ 為許多這些專案提供了入口網站。

正如以上所述,開源專案讓學生利用原始碼作為學習工具。他們可以修改程式,測試程式,幫助查錯和糾錯,也可研究全功能的成熟作業系統、編譯器、工具、使用者介面和許多其他型別的程式。以前專案(如 Multics)的原始碼有助於學生學習這些專案,增長知識,實現新的專案。

雖然 GNU/Linux 和 BSD UNIX 都是開源作業系統,但是它們有自己的目標、工具、版權和用途。有時,版權並不互斥,也會出現交叉,這也加快了開源作業系統專案的改進。例如,OpenSolaris 的多個元件就移植到 BSD UNIX。免費和開源的優點可能是:提髙了開源專案的數量和品質,使用這些專案的個人和公司也增加了。