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