GNU

GNU是一個完全由自由軟體構成的作業系統，其內容軟體主要以GPL方式釋出。這個作業系統是GNU計劃的主要目標，名稱來自GNU's Not Unix!的遞迴縮寫，因為GNU的設計類似Unix，但它不包含具AT&T或任意專有著作權的Unix代碼。GNU的創始人，理察·馬修·斯托曼，將GNU視為「達成社會目的技術方法」。

GNU計劃自己的內核項目Hurd，在上世紀曾是自由軟體基金會發展的重點；gnu.org聲稱如今GNU維護者主要出於技術上的興趣繼續發展此項目。實際使用上，多半使用Linux作為系統內核。許多基於Linux的作業系統包涵了GNU計劃的核心組件和軟體，對於這一類Linux發行版，gnu.org認為應該稱為GNU/Linux。

## 歷史

<image>

1982年，麻省理工學院（MIT）從自己實現的不兼容分時作業系統（ITS）轉向了DEC公司的專有TOPS-20作業系統。此外，MIT人工智慧實驗室新安裝的施樂印表機軟體原理不開放無法上傳寫好的卡紙提醒程序。斯托曼輾轉找到了一位施樂的前員工，但是因為該員工簽署了NDA，他最終也未能得到印表機固件的原始碼。斯托曼決定做些什麼來減緩奪走程式設計師代碼分享權利的這樣一種趨勢，並重現黑客文化。

1983年9月27日，斯托曼在net.unix-wizards和net.usoft新聞群組中公布了GNU計劃。該計劃由斯托曼在MIT人工智慧實驗室發起，希望發展出一套完整的同名自由軟體作業系統來取代Unix。在一次採訪中自述取名為GNU是因為對「gnu」一詞做的文字遊戲本來就較多；他向採訪者舉了曲目The Gnu的例子。

1984年1月5日，斯托曼正式開始編寫計劃內的軟體，為了防止這些軟體將來可能被主張所有權，影響到自由軟體的發展，他辭去了在人工智慧實驗室的工作。他還決定，將使用C和Lisp作為系統編程語言。且GNU將與UNIX兼容。當時，UNIX已經是一個流行的專有作業系統。因UNIX的設計是模塊化的，所以它可以被逐步分塊的（重新）實現。

同年，開發者開始編寫GNU Emacs，次年GNU宣言公開發布。1989年，斯托曼首次發表GNU通用公共授權條款。當時，GNU計劃中的其它部份，如編輯器、編譯器、shell等都已經完成，獨缺作業系統內核。GNU計劃最早的內核基於TRIX開發，斯托曼在宣言中提到這一內核仍然需要添加許多功能來完整模擬Unix。

此後，GNU的開發人員又希望以4.4BSD-Lite的內核為基礎進行開發。Hurd項目早期的負責人湯瑪斯·布希內爾回憶到：「斯托曼當時是個非常信奉代碼重用的人……」。托馬斯的第一選擇是4.4BSD-Lite，他也更熟悉這個內核的代碼。因為GNU和加州大學伯克利分校的那部分BSD開發者最後沒有合作成功；「斯托曼告訴自己：『Mach已經是一個完全能夠使用的內核了，4.4-Lite只是部分可用的，我們選擇Mach內核進行開發吧』」。

根據托馬斯自己的描述，儘管他當時極力反對這個決定，但是最終決定權並不在他手上。他只能盡最大努力在開發Mach的基礎上做些新東西。1987年，斯托曼決定以Mach微內核進行開發，但因為一直不確定卡內基梅隆大學何時要將內核原始碼以合適的軟體許可證釋出，造成計劃延宕三年。1990年，以Mach作為微內核的GNU Hurd立項。

許多必要的軟體需要從零寫起，但已存在的第三方組件，如 TeX、X Window System被部分GNU軟體包依賴並被認為是完整的GNU作業系統的一部分。除了上述的第三方組件外，大多數的GNU軟體是由許多志願者，或由公司、教育機構和非營利性組織贊助下撰寫。1985年10月，斯托曼和其它四人建立自由軟體基金會 (FSF)。在1980到1990年代，FSF雇用軟體開發工程師去編寫GNU必需的軟體。

## 組成

該系統的基本組成包括GNU編譯器套裝（GCC）、GNU的C函式庫（glibc）、以及GNU核心工具組（coreutils），另外也包含GNU除錯器（GDB）、GNU二進制實用程序（binutils），GNU Bash shell 和GNOME桌面環境等。其中GNOME作為一個整體曾是GNU軟體包，但是GNOME基金會現今認為GNOME已不是GNU軟體包（見GNOME條目）。據gnu.org的觀點，GNU作業系統包含GNU軟體包以及第三方的自由軟體。截至2024年7月底，gnu.org記載有459個GNU軟體包（正在維護的有387個）。

## 實際應用

1991年，Linux公開發布。1993年，FreeBSD 1.0釋出。GNU計劃開發的許多軟體就是為了在類Unix作業系統上運行所設計的。開發者在Linux或FreeBSD上運行GNU的軟體。其中，Linux成為常見的GNU計劃軟體運行平台。現在GNU的軟體包也廣泛應用在其它作業系統中，如BSD變體的Solaris，和OS X，以及Microsoft Windows。

由於GNU的知名度，有興趣的商家開始促進發展或出售GNU軟體和技術支持。其中最突出的和成功的，是Cygnus Solutions，後被紅帽公司收購。

威斯康星大學麥迪遜分校電腦科學系在1995年發表的一個研究認為：GNU作為作業系統比他們的專有Unix對應更為可靠。

## GNU 變種

GNU計畫的官方內核項目是GNU Hurd，項目中的GNU Mach是微內核；而在2012年，Linux-libre內核正式成為一個GNU軟體包，相較於上游的Linux，其開發者使用腳本刪除了所有專有組件。

gnu.org認為Linux內核，與GNU工具和實用程序協同使用作為一整套作業系統時應承認自己為GNU變種，並促進改稱 GNU/Linux（導致GNU/Linux命名爭議）。gnu.org根據自由系統發布指南（FSDG）認可的針對個人電腦的Linux發行版，包含Dragora、Dyne:bolic、Guix System、 Trisquel、Hyperbola_GNU/Linux-libre和Parabola GNU/Linux-libre。不使用Hurd（GNU Mach）或Linux作為內核的GNU的其他變種包括Debian GNU/kFreeBSD和Debian GNU/NetBSD，兩者均已停止維護。

<image>

- Parabola GNU/Linux-libre, 基於Arch Linux的Linux發行版電腦作業系統

<image>

- 採用Linux-libre內核的Guix System，運行著Xfce桌面環境

<image>

- Debian GNU/Hurd，運行著Xfce4桌面環境和Midori瀏覽器（截圖創建於2016年）

## 圖標

<image>

- GNU 30周年紀念圖標

<image>

- 上色版本

<image>

- 粗體版本

代表GNU的牛羚頭圖標同時也是GNU計劃的商標，最初版本是Etienne Suvasa所設計。而今比較流行的粗體版本則是Aurelio Heckert所設計。

## 基本資料

- 作業系統家族：類Unix系統
- 開發者：社區
- 源碼模式：開放原始碼
- 市場取向：個人電腦、移動設備、嵌入式設備、伺服器、大型機、超級計算機
- 內核類別：微內核 (GNU Hurd中的GNU Mach內核)或整塊性核心 (Linux的分支，GNU Linux-libre)
- 許可證：GNU GPL、GNU LGPL、GNU AGPL、GNU FDL和少量寬鬆自由軟體授權條款
- 網站：https://www.gnu.org/
- 程式語言：各種（特別是C語言以及彙編語言）
- 支援平台：Linux-libre內核：IA-32, x86-64, Alpha, , ARM, AVR32, Blackfin, C6x, ETRAX CRIS, FR-V, H8/300, Hexagon, 安騰, M32R, m68k, , MicroBlaze, MIPS, MN103, OpenRISC, PA-RISC, PowerPC, s390, , SuperH, SPARC, TILE64, Unicore32, Xtensa、Hurd（GNU mach內核）：AArch64, IA-32和x86-64