Antinomyの世界

鳴る神の 少し響みて さし曇り 雨も降らぬか 君を留めむ

为什么我要使用GNU/Linux这个称呼

随笔 0 评

众所周知(并非),Linux严格来说只是kernel的名字,一个完整的操作系统应该是包含用户空间+内核空间,其中内核空间负责的是与计算机硬件交互的那一部分,而对于一个完整的操作系统来说光有内核是不够的,我们绝大多数人在使用操作系统时也不会与内核直接交互,而用户交互的这一部分就是用户空间,在大部分所谓的Linux 发行版里,用户空间的程序就是GNU。

GNU对很多人来说可能很陌生,更多的人只是在哪里听过这个名字,从事开源相关项目的人可能是通过GPL了解这个东西,实际上GNU的诞生还要要早于Linux内核。它开始于美国程序员理查德·马修·斯托曼(Richard Matthew Stallman,简称rms)在1983年9月27日发起的GNU Project,其目的是开发一个自由的类Unix操作系统,他将这个系统命名为GNU,即GNU is not Unix的递归缩写,直到1991年该项目几乎完成了一个完整操作系统的大部分内容,但是唯独其内核项目GNU hurd难产了(这个难产一直持续到2013年,Debian GNU/Hurd发布),而同年在芬兰的赫尔辛基大学,由还是学生的林纳斯·贝内迪克特·托瓦兹(Linus Benedict Torvalds)发布了Linux内核,之后人们将缺少内核的GNU系统与Linux内核结合起来,就诞生了如今广泛使用的GNU/Linux系统。

从历史的角度上来看,GNU和Linux都为这个操作系统的诞生做出了贡献,所以在提及名称时,应当将二者并列,就像rms本人一直坚持的那样,他甚至在GNU的官网上发了一篇FAQ来强调这一点:GNU/Linux FAQ。他坚持的理由当然也是希望人们不能忘记GNU在其中所做的贡献,以更好的宣传其“自由软件”的理念。但是很明显现在人们普遍会把这个系统叫作Linux,这也符合信息传递的特点,即简短的信息更有利于传播,GNU/Linux这个名字还是有点长了,且不说在打英文的时候要插入一个slash符号还是有点麻烦,光是要念出这个词很多人一下子都不太确定G是不是要发声。

我本人在撰写相关内容或者日常聊天时,还是尽量保持称呼其为GNU/Linux,除了表达对于GNU项目的尊重外,我认为传递一个正确的信息在如今信息爆炸的社会下是很重要的。Linux这个称呼很容易造成错误理解,让人以为是Linus在1991年开发出了一个完整的操作系统,这就是错误的历史;而除了历史外,从计算机知识的角度来说,Linux这个名字也是不合适的,就像我上面所说的,我们在使用GNU/Linux系统时,并不是在与Linux内核交互,我们是通过GNU bash与终端交互,我们敲的ls、pwd、mkdir这些命令是通过GNU coreutils实现,我们的程序是通过GCC编译,并且调用glibc提供的C标准库,这些都是在和GNU进行交互。甚至可以说,除非你是操作系统开发者,你本质上都是在使用“GNU操作系统”。

此外,使用GNU/Linux这个名字还能很好的解释一些问题。比如Android也是使用Linux作为内核,那么按理说它应该也是Linux发行版,但Android却不能运行我们在Ubuntu、Fedora等桌面操作系统上运行的程序(Android 16之后可以通过虚拟化的方式实现),原因就在于Android并不是一个GNU操作系统,它用Bionic标准库取代了glibc,用Toybox取代了GNU Coreutils,所以它在行为上就和GNU完全不一样,自然也不能运行为后者开发的程序,类似的还有Alpine Linux、Openwrt这些有着特殊用途的Linux发行版,它们也没有使用GNU的组件,所以它们在表现上也与传统的GNU/Linux系统不一样,这也是开发Docker镜像时,经常需要针对Alpine Linux进行特殊适配的原因。

所以虽然只是一个名字,但是对于传播正确的信息来说,无疑GNU/Linux这个名称要更合理,可能会有人争辩说Linux这个名称也不能说是错误的,毕竟它确实使用了Linux内核,而且内核是操作系统重要的组成,这个说法看似有道理,但是就像你不会把Windows系统叫NT系统,macOS系统叫XNU系统一样,操作系统本身用内核名称命名似乎也不太说得过去。而且Linux这个称呼会把使用了Linux内核但不是GNU的系统包含进去,让人觉得这些都是同一个操作系统理应可以运行同样的程序,这反而更容易造成误会。

其实抛开技术、知识的角度,从商业上,GNU所倡导的“自由软件”理念更不为商业公司所接受,这或许也是像Canonical、红帽之类的公司所维护的发行版会“刻意”强调Linux而省略GNU的原因(但社区驱动的发行版比如御三家Debian、Fedora、Arch基本都接受GNU/Linux这个称呼,见下图)。rms在很多年来被人们认为是一个很偏执、很古怪的人,他对于“自由”的追求完全不适用于当今的社会。但是站在2026年6月这个时间点,科技巨头们为了所谓的“AI”疯狂的加注,连锁反应导致了社会裁员潮,科技产品大涨价等问题,而作为普通人的我们只能干看着巨头们鼓吹的“下一个工业革命”。大模型(LLM)从原理上来说,就是普通人完全无法参与,只有巨头才有算力、有数据、有钱来发展的东西,从这个角度来说,LLM和赛博朋克作品里的“义体”简直就是完美的对应,我们也许不用等到2077年就能看到赛博朋克世界的到来也说不定。rms的“GNU宣言”,或许正是因为他看到了现在,所以在遥远的过去种下了种子,不管这颗种子最后是会生根发芽还是胎死腹中,我只能坚持使用GNU/Linux这个称呼,来表达对他的尊敬。

Debian在名字里就包含GNU/Linux
Fedora在其文档里使用GNU/Linux的称呼
Arch在Wiki里称其为GNU/Linux系统

实体游戏荣光永在
发表评论
撰写评论