你对linux感兴趣并读了一些博文。在其中,你遇到了一个有趣的名字:GNU/Linux。这些字母代表着什么意思,为什么人们总是将它们与Linux联系在一起呢?
这个问题很简单,但答案却引发了Linux世界几十年来一直存在的争议。
GNU/Linux是一个给自由开源操作系统的名称,我们通常称之为”Linux”。
当用来指代通用操作系统时,“GNU/Linux”和“Linux”这两个术语是可以互换使用的。但是,创建一个完全功能的操作系统需要许多不同的组成部分。可以说,在GNU/Linux中,GNU的部分比Linux更多,这就是为什么如何称呼这个操作系统并不像听起来那么简单的原因。
让我们回到20世纪80年代,当时的计算机行业正处于一个转型时期。一场涉及苹果公司的最高法院案件判决,二进制程序(与源代码不同,可直接执行的软件)可以受到版权保护。几年后,微软发布了windows操作系统,这改变了人们与软件互动的方式。
在软件开始受到版权保护并以商业利益为目标之前,大多数软件主要由研究人员和学者使用。计算机代码是公开共享的,人们可以自由地使用这些程序。然而,随着各种限制的出现,以前可以自由进行的行为变得违法了。
于是形成了一个名为自由软件运动的组织。在1983年,理查德·斯托曼(Richard Stallman)宣布了一个计划,要创建一个完全非专有的兼容Unix的操作系统。他称之为GNU项目,并且该宣布仍然可以在GNU.org上找到。
GNU是一个递归缩略语,代表“GNU’s Not Unix”。GNU项目提供了许多现在自由桌面所依赖的重要工具。80年代创造的关键工具包括GCC(用于编译C语言的工具)、功能强大的Emacs文本编辑器、Bash以及仍在使用的各种命令行实用程序。
GNU项目包含许多广泛使用的应用程序,如GIMP(GNU图像处理程序)和GNOME,这是最受欢迎的自由桌面环境之一。无论您使用哪个Linux操作系统,您可能都依赖于GNU软件的许多组件。
GNU项目还负责制定了通用公共许可证(General Public License,GPL)。正是这个许可证在多年间保持了我们使用的大部分自由软件的自由性。
Linux诞生于1991年。这个项目始于一位赫尔辛基大学的学生,他开始独立开发自己的操作系统内核。他的名字叫Linus Torvalds。
当时,GNU项目已经创建了很多构建一个完整免费操作系统所需的组件,但还缺少一些关键部分。这些部分包括硬件驱动程序、守护进程和一个可工作的内核。这些组件使得软件能够与硬件进行通信。
GNU Hurd,GNU项目尝试开发的内核,在此之前已经开始开发,但还没有准备好。另外一个叫做MINIX的内核自1987年起就存在,但它只被授权用于教育目的。
在受挫之后,Torvalds决定自己制作一个内核。他将这个个人项目称为Linux,将自己的名字和UNIX结合起来,但他认为这样做太自大而不适合公开分享。于是,他将项目命名为Freax,结合了“free”(自由)、“freak”(怪异)和“UNIX”。一位同事不喜欢这个名字,更喜欢Linux。Linus同意了,这个名字就保留下来了。
起初,这个内核并不是免费的,但在1992年,Linus将Linux授权为GPL(GNU通用公共许可证),这是GNU项目创建的一种强制版权协议。这个决定对项目的成功起到了很大作用。许多人选择采用Linux并为其开发做出贡献,而不是创建竞争性的内核。
凭借GNU工具和一个功能齐备的Linux内核,我们现在拥有一个工作正常的免费操作系统。但是我们应该如何称呼它呢?从早期开始,许多人将使用Linux内核的操作系统简单地称为”Linux”。这引发了一些紧张局势,因为Linux并不代表我们在说Linux时所想象的大部分内容。
再次强调,Linux内核是使软件和硬件能够相互通信的具体部分。而我们在屏幕上看到的一切呢?那是其他东西。
理想状态的GNOME桌面操作系统 Richard Stallman最初提议将这样的创作称为基于Linux的GNU系统。然后他改变了偏好,提出了GNU/Linux(发音为”GNU slash Linux”或”GNU plus Linux”),以便清楚地表明两个项目都发挥了重要作用。一些人接受了这个观点,而其他人则认为这个名字既笨拙又没有必要。这种分歧一直持续至今。
从一开始,GNU项目的目的就是开发一个完整的操作系统。内核只是这个拼图中缺失的一部分。Torvalds的目标并不是创建一个操作系统,而是提供那个缺失的部分。
有强有力的理由认为GNU/Linux是一个更准确、更精确的名称。但它是否是一个好的名称呢?以下是人们支持将操作系统称为”Linux”的一些论点。这个列表可能更短,但或许更有说服力。
你更喜欢GNU/Linux还是Linux? 我不是GNU/Linux的粉丝,但说一台笔记本电脑运行GNU而不是Linux确实更清晰。随着Android和Chromebook的兴起,使用Linux这个名称已经变得越来越不足够了。一个程序在Linux上可用并不意味着它能在Android上运行,反之亦然。
随着信息娱乐系统、智能家居产品、可穿戴设备和其他电子产品继续采用Linux内核,情况变得更加复杂。