—— 在我们行业中,有一个众所周知的英雄故事: “一个芬兰的大学小伙,因没有足够的钱购买UNIX,后面就决定自己做一个类似的操作系统,在1991年的时候,他凭个人之力发布了Linux内核的第一个版本“。这就是Linux之父Linus Torvalds。 很多误认为是他创建了整个Linux操作系统,但这并不是事实。
在我们行业中,有一个众所周知的英雄故事:
“一个芬兰的大学小伙,因没有足够的钱购买UNIX,后面就决定自己做一个类似的操作系统,在1991年的时候,他凭个人之力发布了Linux内核的第一个版本“
这就是Linux之父Linus Torvalds。
他还是Git这个版本管理工具的创始人。今天使用GIT来对代码进行分布式管理是绝对的主流。
这样的人,我只能用一个词来形容,那就是“天才”
我也非常崇拜他,但还是进入今天我要聊的话题。那就是:
Linux该不该叫Linux
本篇为趣谈自由软件与开源软件的第三篇,本系列其它文章为:
谁提出了这个问题?
大家都把Linux这种操作系统叫Linux,这应该是主流。
那到底是谁提出了这个问题,为什么本来是被大家都接受的事实为什么又有人提出争议了呢?
提出这个问题的是来自GUN运动阵营的一些人,他们提出了
使用Linux来称呼这样的操作系统是不公平的,使用GUN/Linux可能是更公正的
自由软件之父,GNU运动发起人Richard Stallman还特意写了篇文章,以支持这个提议。
当然,这个提议并不是空穴来风的,背后确实有一定的理由来支撑的。
那这究竟是怎么回呢,我就从Linux操作系统究竟是怎么组成的说起吧。
Linux操作系统的组成
操作系统是相对于硬件来说,它是软件。
对于大众来说,他们所认知的操作系统大致应该是这样:

大多数人的认知中,硬件与操作系统可能会分为三层:
- 硬件层。操作系统的能力都是建立在硬件之上的。
- 系统层。操作系统自带的一些基本能力和软件。比如Windows的服务管理,自带的IE浏览器等。
- 第三方生态。基于操作系统提供的扩展能力,开发及供大众使用的软件。比如QQ,微信等
其实这个理解也不能说是错的。
但如果按这个理解来说,我们的大神开发的东西在Linux系统在上面没有任何立足之地,也就是整个操作系统和我们的Linus Torvalds大神开发的东西没有任何关系。
当然这不是事实。
一个误解
可能有相当一部分人,甚至是程序员群体中可能也存在,会认为Linus Torvalds开发了Linux操作系统。
严格的说,这不是事实,Linus Torvalds开发的其实是:Linux内核
那Linux内核在操作系统中究竟处于什么地位?
Linux内核
简而言之,Linux内核是硬件与软件打交道的中介。所以它叫内核。
内核是计算机硬件与其进程之间的核心接口。它负责两者之间的通信,还要尽可能高效地管理资源
Linux内核的主要用途
- 内存管理
- 进程管理
- 设备驱动程序
- 系统调用与安全服务
内核这个东西不只在Linux中存在,任何系统包括大家使用的Windows,也有内核。只不过内核是在背后支撑性的,我们使用操作系统压根不可能接触到内核,所以对它可能不太熟知。
我们的Linus Torvalds大神开发的其实是Linux内核。
所以,一个操作系统严格说来,是这样组成的:

那究竟我们用的Linux系统除了内核这个见不到的东西之外,到底我们使用的那些系统服务及软件究竟是哪来的?
GUN + Linux内核 = Linux操作系统
我在前面的文章中说到,自由软件之父早在1983年时就发起了GNU计划与运动,计划编写一个完全自由的,替换UNIX的操作系统。
按照上述所说,一个操作系统包括很多东西,有内核,有系统的一些必备的组件,还得有UI界面,甚至是游戏。
在Richard Stallman发起这个GNU运动时,还是1983年,那个时候可没Linus Torvalds什么事。
事实上,GNU确实是一项伟大的工作,与Linus Torvalds是独自己一个开发出一个内核不同,GNU运动是一群杰出的有理想的程序员共同参与的事情。
在GNU运动中,它们规划了操作系统所需要的方方面面的东西,也包括内核,甚至是游戏。
今天你使用的Linux操作系统,以下一些你可能熟悉的部件,其实是属于GNU的成果。
- 最有名的,GNOME是GNU的一部分,因为一个操作系统是需要UI的
- 编译器套装GCC,GNU的C库glib
- Bash,是GNU的UNIX兼容Shell
- GRUB,统一引导加载程序
- 著名的Emac,noao等编辑器,GIMP图像处理工具等。
其实这个列表还有很长,当然最重要的是GNU其实是有自己的内核计划的,那就是Hurd。
但是,GNU自己计划的内核Hurd始终没有稳定,一直在开发中。而在1991年,众所周知,Linus Torvalds开发了Linux内核。
于是,把GNU的已开发出来的东西和Linux内核一整合,最终推动并发展出了现在的Linux操作系统。
所以,严格的说,Linux操作系统 = GNU + Linux内核,并且以代码量占比来说,一个Linux发行版本中,可能GNU的代码量占到28%左右,而内核代码量是3%左右。
那你应该了解了为什么GNU阵营有人这样主张了么。这妥妥的有一定的道理。
他们主张应该把这样的操作系统称呼为:GUN/Linux,这才是更公平的,体现并尊重了GNU运动做出的贡献,更重要的是传播了自由软件的理念。
不过,这个是有争议的,Linux社区对此并未形成统一意见。大多数人可能仍然认为沿用Linux更好。包括Linus Torvalds。
我的看法
文化是约定俗成的,但不代表它是正确的
名称其实也是文化的一种,名称不正确但却被大家接受,属于约定俗成的,这种例子也不少。
从Linux操作系统上来说,考虑到尊重GNU运动及背后的程序员做出的贡献来说,使用GUN/Linux的确是个更正确的名称。
但如我所说,文化并不是完全正确的,它只是约定俗成的。在大众甚至是程序员群体,已经基本接受Linux这个名称的前提下,改变它的名称并因为这一点引发太多争议我认为并无太多必要。
所以,对于那些愿意称它为GNU/Linux系统的群体来说,比如Debian,它就称自己是GNU/Linux系统,我们应该非常欢迎。而对于仍然愿意沿用Linux或主流称为Linux的,我觉得也很合理。
我认为,更重要的事情是,宣扬GNU及其背后的自由软件的理念,才是更需要去做的一件事情。
至于去讨论Linux内核和GNU那些软件,哪个更重要,这种争议并不会产生什么实质价值,只会分裂不同群体而已。
所以,我在了解了自由软件及其背后的GNU运动后,就决定写下这个系列,我认为可能有非常多的程序员,特别是在国内程序员,对自由软件或GNU并不是非常了解,希望我的文章能让更多人知道GNU及其背后的自由软件运动。
一个非常奇怪的事情是,基于GNU的大多数主流Linux并不被认为是完全自由的操作系统,这是怎么一回事?
下一篇:趣谈自由软件与开源软件(四):为什么主流的Linux发行版本不被认可为完全自由的操作系统