複製鏈接
請複製以下鏈接發送給好友

GNU/Hurd

鎖定
GNU/Hurd 是 GNU 操作系統最早用於內核的軟件項目,自 1990 年開始研發,到(2018年5月)還處於開發階段。由於 Linux 內核已經很適合 GNU 操作系統,而且 GNU 和 Linux 的融合十分成功,使得 GNU/Linux 已經十分流行,所以 Hurd 的內核被應用的必要性被減弱了。儘管如此,GNU 還是沒有放棄它,它依然是最有潛力的類 UNIX 操作系統內核。 [1] 
軟件名稱
GNU/Hurd
軟件授權
自由軟件
性    質
操作系統內核
開發組織
GNU
研發時間
1990 年

GNU/Hurd產生背景

談到 Hurd 內核的背景,必須從 GNU 説起。
上個世紀 70 年代初誕生的 UNIX 操作系統是極富有意義的:由於它十分的簡潔、功能強大、移植性優良,而且由於 AT&T 因法律原因無法對這個操作系統壟斷經營,許多開發商都積極開發它的分發版本,很快就成為了風靡美國的操作系統。但是由於之後計算機世界出現了軟件自由化的呼聲,而 UNIX 作為一種專屬操作系統,顯然不利於軟件自由化。而軟件自由化又迫切需要一種由自由軟件組織自主掌握的平台,也就是自由化的操作系統。
在這種背景下,Richard Stallman 於 1983 年發起了 GNU 項目,旨在建立一個與 UNIX 操作系統兼容的、自由化的操作系統。(GNU 全稱,GNU's Not UNIX)。
一個操作系統不僅僅是一個可以提供運行程序的虛擬環境的軟件(這幾乎是內核的作用),它還必須提供足夠的功能滿足使用者的需要。而且在當時的環境下,由於內核不是開發 GNU 操作系統的必要因素,所以 GNU 項目正在開發除了內核以外的其他軟件,這樣可以增強自由軟件的影響力(這些軟件可以被 UNIX 用户直接使用)。直到 1990 年才開始開發一個旨在能夠替換 UNIX 內核的自由內核—— Hurd。

GNU/Hurd發展歷史

Richard Stallman (RMS) 於 1983 年創建 GNU,作為創建完整自由操作系統的項目。在 GNU 宣言中,他提到有一個原始的核心,在 1986 年 2 月發佈的第一封 GNUsletter 文件中,他説這個原始內核是在麻省理工學院開發的 TRIX。
自 1986 年 12 月以來,自由軟件基金會(FSF)已經開始着手 "TRIX所需的變革" [2]  。此後不久,FSF開始 “與卡內基梅隆大學大學的 Rashid 教授進行談判,與他們一起研究 Mach 內核的開發” [3]  。該文件暗示 FSF 有意向直接使用別人的工作,而不是執着於修復 TRIX。
在《Gnusletter, Feb. 1988》中,RMS 正在談論採用 Mach 並將 Berkeley Sprite 文件系統置於其之上,“在Berkeley Unix 的部分被替換之後”。
六個月後,FSF 説“如果我們不能得到 Mach,我們會使用 TRIX 或 Berkeley's Sprite”。在這裏,他們將 Sprite 當作一個完整的內核,而不僅僅是一個文件系統。
1990 年 1 月,他們説:“我們沒有做任何內核工作,開始一個內核項目,當我們仍然希望使用 Mach 時,沒有任何意義。” [4]  。直到 1991 年宣佈更詳細的計劃時,沒有什麼重大事件發生。
“詳細的計劃”:
我們仍然對運行於 Mach 之上的多進程內核感興趣。 CMU律師正在決定是否可以釋放具有分配條件的 Mach,以便我們分配它。如果他們決定這樣做,那麼我們可能會開始工作。 與 Mach 的可用條件相同,CMU 有一個稱為 Poe 的單服務器部分Unix仿真器。它不僅相當慢,而且只提供最少的功能。我們可能會從擴展 Poe 開始,提供完整的功能。我們希望後面可以將模塊化仿真器分成多個進程。
RMS 解釋了 Hurd 和 Linux 之間的關係,他提到 FSF 在 1990 年開始開發 Hurd。從[Gnusletter, Nov. 1991],開始,Hurd (運行在Mach上) 是GNU的官方內核。
這些都是多年來的公告。
  • hurd-announce -- GNU Hurd announcement, May 91
  • hurd-announce2 -- GNU Hurd announcement, Nov 93
  • hurd-flash -- News flash, Apr 94 -- it boots!
  • hurd-flash2 -- News flash, May 94
  • hurd-flash3 -- News flash, Jul 94 -- emacs runs!
  • hurd-flash4 -- News flash, Aug 94
  • hurd-flash5 -- News flash, Sep 94 -- gcc runs!
  • hurd-flash6 -- News flash, Nov 94
  • hurd-flash7 -- New Snapshot, Apr 95
  • hurd-flash8 -- New Snapshot, Jul 95 -- ext2fs support
  • hurd-flash9 -- News Flash, Nov 95 -- ftp works!
  • hurd-flash10 -- New Snapshot, Apr 96 -- NFS and lots else works!
  • hurd-flash11 -- Binary image available, Apr 96 This and NetBSD boot flopies should be enough to get a working GNU/Hurd system!
  • hurd-flash12 -- Test release status (Jul 96)
  • hurd-flash13 -- Test release announcement (Aug 96)
  • GNU Hurd 0.1 (1996-09-06)
  • hurd-flash14 -- Release 0.2 announcement (Hurd)
  • hurd-flash15 -- Release 0.2 announcement (complete GNU system)
  • GNU 0.2 (1997-06-16)
GNU Hurd 0.5 released (2013-09-27)
GNU Hurd 0.6 released (2015-04-10)
GNU Hurd 0.7 released (2015-10-31)
GNU Hurd 0.8 released (2016-05-18)
GNU Hurd 0.9 released (2016-12-18)
這些公告詳細記錄了 Hurd 內核發佈的版本以及時間。 [5] 

GNU/Hurd優勢與挑戰

[6]  GNU Hurd 有許多誘人的特點:
它是免費軟件,所以任何人都可以在 GNU 通用公共許可證 (GPL) 的條款下使用,修改和重新發布它。
它兼容,因為它提供了一個熟悉的編程和用户環境。對於所有意圖和目的,Hurd 提供與現代類 Unix 內核相同的設施。 Hurd 使用 GNU C 庫,其開發緊密遵循 ANSI / ISO,BSD,POSIX,Single Unix,SVID 和 X / Open等標準。
與其它流行的內核軟件不同,Hurd 具有面向對象的結構,可以在不影響其設計的前提下進行改進。這種結構將幫助Hurd 進行重大設計和修改,而不必完全重寫。
Hurd 以非常模塊化的方式建造。其他類似 Unix 的內核 (例如Linux) 也是模塊化的,因為它們允許加載(和卸載)一些組件作為內核模塊,但 Hurd 更進一步,因為構成整個內核的大多數組件都作為分離用户空間進程並因此使用彼此隔離的不同地址空間。這是基於微內核的多服務器設計。在 TCP / IP 協議棧中錯誤的內存解引用不可能導致整個內核以及整個系統的崩潰,這在單一的 Unix 內核體系結構中是一個真正的問題。
Hurd 將類似內核的功能分解為單獨的組件(服務器)的一個優點是可以使用不同的編程語言構造這些功能 - 這在單片內核中不太可能實現。實質上,只需要從編程環境到RPC機制的接口。 (如果您有興趣,我們為此提供項目提案)。
Hurd 是學習如何成為內核研究者或實施內核技術新思路的有吸引力的平台。系統的每個部分都被設計為易於修改和擴展。
在不重新啓動機器的情況下,可以開發和測試新的 Hurd 內核組件。運行您自己的內核組件不會干擾其他用户,因此不需要特殊的系統特權。內核擴展的機制在設計上是安全的:除非授權他們或者您是系統管理員,否則不可能將更改強加給其他用户。
Hurd 是正在運行的真正的軟件。這不僅僅是一個研究項目或提案。
當然,Hurd 也面臨着一些挑戰: [7] 
儘管它們在更簡單的嵌入式領域非常流行,但還沒有成功的真正的多服務器微內核系統用於通用桌面。 這仍然是一項正在進行的研究工作。
同樣,分佈式操作系統內核中的資源調度也是一個研究課題。 例如,在相關的“打開問題”頁面上閲讀更多關於它的信息。 另外,Viengoos 研究內核項目努力探索這些內容。
參考資料