我们在网上已经习惯用“Linux”来称呼Linux操作系统了,然而,偶尔也用“GNU/Linux”来称呼和指代同样的操作系统和软件。同时人们也在争论这两种称呼哪个更合适。

本文将不会选边站队,仅力图向你讲述这两种称呼的来历,并解释”Linux”与“GNU/Linux”之间的微妙差异。

什么是“Linux”?

“Linux”这个词仅仅代表内核——操作系统的核心。其他软件, 比如用来编译内核的GNU C编译器,bash命令行终端,GNU Shell组件(包括所有你用到的基本命令),X.org图形服务器, 一个图形化的桌面环境比如Unity(译者注:基于GNOME 3开发),以及在桌面环境上运行的各种软件,比如Firefox,这些都是由不同开发者来开发的。

Linux发行版则集合来所有这些由不同开发者开发的组件,我们习惯将这个有机整合的软件包称为“Linux”.有关更多Linux发行版的知识以及发行版之间的差别,可以阅读HTG 解码:什么是Linux发行版?它们之间有何差别?

GNU计划

1983年Richard Stallman(理查德·斯托曼)创立GNU计划。GNU的目标是创建一套完全由自由软件的兼容UNIX的操作系统。“GNU”是英文“GNU‘s Not Unix!”的递归缩写。(“自由软件”是对一类开源软件的称呼,而自由软件更强调自 由,不过,本文不打算讨论自由软件和开源软件的差异)

1991年的时候,GNU计划已经完成了GNU操作系统的绝大部分 组件,包括GNU C编译器(gcc),bash命令行终端和其他Shell命令行组件,以及Emacs文本编辑器等等。其他组件则有已经存在的自由软件来替代,比如X Windows系统来提供图形化桌面的接口。

然而,操作系统的内核——GNU Hurd内核——依旧没有完成。GNU计划非常冒险的选择了“微内核”设计架构(微内核是指将系统服务的实现,与系统的基本操作规则区分开来。它实现的方 式,是将核心功能模块化,划分成几个独立的进程,独立运行。可以减少系统之间的耦合度,易于实现与除错,也可增进可移植性。它可以避免单一组件失效,而造 成整个系统崩溃。Windows NT以及Mac OS均是微内核架构。——译者注,摘自维基百科“微内核”词条),也正因为选用了微内核架构造成开发周期异常漫长。(到2013年,GNU Hurd内核已经开发了23年依然没有发布稳定版)。

千呼万唤Linux来!

对GNU操作系统来说,缺失的最后一环就是内核(kernel), 同时这也是最重要的一环,可谓是“万事俱备只欠东风”。时间到了1991年,芬兰赫尔辛基大学的学生Linus Torvalds(林纳斯·托瓦兹)发布了Linux内核的第一个版本。将Linux内核、GNU软件以及X窗口管理系统整合在一起,就可以成为了一个完 整的且自由分发的操作系统了(就如同现在的“Linux发行版”)。

刚开始就已经有这种操作系统应该如何称呼的争论。1992 年,Yggdrasil计划用““Yggdrasil Linux/GNU/X”来命名其整合起来的软件。而Richard Stallman和自由软件基金会更加推崇使用“GNU/Linux”。Debian目前一直将其软件称为“GNU/Linux”。(Debian以其坚 守Unix和自由软件的精神,以及其给予用户的众多选择而闻名。现时Debian包括了超过37500个软件包并支持12个计算机系统结构。——译者注, 摘自维基百科“Debian”词条)。

不同的声音:GNU/Linux

GNU计划要开发一个叫“GNU”的完全自由的操作系统,而 Linux的绝大部分软件也是GNU计划提供的。然而这就出现了一个显而易见的问题,也正如Richard Stallman反对的,称之为“Linux”会泯灭GNU的意义以及其初始目标——一个完全自由的操作系统并为用户提供自由。而这也就与另一组争论交织 在一起了——“自由软件”和“开源软件”,“自由软件”这个称呼更加强调自由权力,而“开源软件”则关注于技术优势而淡化意识形态纷争。

正如2005年Richard Stallman在接受ZNET采访时所说:” 设计Linux的目的并不是为了解放网络世界,而且Linux的开发动机也并不会带给我们今天所看到的整个GNU/Linux系统。今天有数十万用户使用 这样的操作系统,他们因此而获得了自由——但他们却并没有意识到这一点,因为他们觉得这个系统就是Linux,而且是一个学生因为“只是觉得好玩”而开发 出来的。”

(1991年Linus Torvalds发布Linux内核第一版的时候是芬兰赫尔辛基大学研二的学生,第一次发布到新闻组的时候称其写Linux只是“Just For Fun”,后来他在2002年出版了一本自传,也取名为《Just For Fun》——译者注)

更多有关此的思考可以在GNU网站上找到。

不同的声音:Linux

而支持使用“Linux”这个称呼的人认为,仅仅关注GNU是个错误,那么基于同样的理由,众多发行版包含不同组织的软件那么就应该称为“Mozilla/KDE/Apache/X.org/GNU/Linux”。(这是典型的诡辩——译者评价)

大多数人仍旧使用“Linux”这个称呼。除非有更好的,因它简单易记,朗朗上口。且无论这理想的名字是什么,“Linux”都会是大多人对这操作系统的简称。你可以在这里看到“Linux”也能在别处看到,因为这对读者来说是能够第一时间就明白的称呼。

好了,我们以Linus Torvalds于1996年在新闻组里的话做结尾:“嗯,关于这个的讨论已经够多的了,非常感谢!对于公众来说,如何称呼Linux这根本就不算个事,只要可以自圆其说就够了(对双方而言)。从我个人的角度,我会非常乐意继续称之为Linux”。

如果想了解更多关于Linux的起源与发展,这里极客范推荐给大家 一个视频:Code Linux。视频中有包括Linus Torvalds、Richard Stallman、Alan Cox、Eric S. Raymond等一众大神现身说法,推荐给程序员和极客们。

原文: Chris Hoffman 翻译: 极客范 - 爱开源的贡献开源社区

世纪大争论:Linux还是GNU/Linux?的更多相关文章

  1. GNU/Linux与开源文化的那些人和事

     一.计算机的发明 世上本无路,走的人多了,就有了路.世上本无计算机,琢磨的人多了--没有计算机,一切无从谈起. 三个人对计算机的发明功不可没,居功至伟.阿兰·图灵(Alan Mathison Tur ...

  2. [转帖]GNU/Linux与开源文化的那些人和事

    GNU/Linux与开源文化的那些人和事 时间:2015-09-24   作者:admin 分类:新手入门 阅读:167次 http://embeddedlinux.org.cn/emb-linux/ ...

  3. Linux简介及Linux学习路线图

    一.Linux 为何物 Linux 就是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS ,至于操作系统是什么,就不用过多解释了,如果你学习过前面的入门课程,应该会有 ...

  4. 大神教你Debian GNU/Linux 9.7 “Stretch” Live和安装镜像开放下载

    Debian项目团队于昨天发布了Debian GNU/Linux 9 "Stretch" 的第7个维护版本更新,重点修复了APT软件管理器中存在的安全漏洞.在敦促每位用户尽快升级系 ...

  5. 完全用 GNU/Linux 工作(转)

    转自:http://www.chinaunix.net/old_jh/4/16102.html 看到一半,实在太长,但已觉得很好,转来分享一下. 完全用 GNU/Linux 工作 - 摈弃 Windo ...

  6. UNIX发展史(BSD,GNU,linux)

    先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...

  7. UNIX发展史(BSD,GNU,linux)(转)

    转自 UNIX发展史(BSD,GNU,linux) 这篇文章写的非常好,在这里转一下. 先前的一個理想 UNIX 系统自 1969 年 Ken ThompsonKen Thompson 与 Denni ...

  8. 【历史】- UNIX发展史(BSD,GNU,linux)

    先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...

  9. [转自王垠]完全用GNU/Linux工作,摈弃Windows低效率的工作方式

    ZT (a qinghua student's article) 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个人都想用的.如果 ...

随机推荐

  1. Android中ListView嵌套GridView的简单消息流UI(解决宽高问题)

    最近搞一个项目,需要用到类似于新浪微博的消息流,即每一项有文字.有九宫格图片,因此这就涉及到ListView或者ScrollView嵌套GridView的问题.其中GridView的高度问题在网上都很 ...

  2. 可变参数列表-Java SE5新特性(转)

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理.注意:可变参数必须位于最后一项.当可变参数个数多于一个时,必将有一个不是最后一项,所以只支持 ...

  3. linux下tcpdump命令详解

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...

  4. 自定义ScrollViewer的Touch事件--触摸上下移动ScrollViewer滚动到指定位置

    double mPointY;//触摸点的Y坐标 double mOffsetY;//滚动条当前位置 bool mIsTouch = false;//是否触摸 //触摸事件 private void ...

  5. HDU 5418 Victor and World (Floyd + 状态压缩DP)

    题目大意:从起点 1 开始走遍所有的点,回到起点 1 ,求出所走的最短长度. 思路:首先利用 Floyed 求出任意两点之间的最短距离 dis[i][j].求出任意两点之间的最短距离后,运用动态规划. ...

  6. POJ3255--次短路

    求1到N的次短路,到某个顶点v的次短路有两种可能,一是到其他某个顶点u的最短路+edge(u,v)二是到其他某个点u的次短路+edge(u,v): 因此在松弛的时候不仅要记录最短路,同时也要记录次短路 ...

  7. memcached学习——memcached的内存分配机制Slab Allocation、内存使用机制LRU、常用监控记录(四)

    内存分配机制Slab Allocation 本文参考博客:https://my.oschina.net/bieber/blog/505458 Memcached的内存分配是以slabs为单位的,会根据 ...

  8. Ajax 获取数据代码

    无刷新获取字符串: Html网页中: <script> //定义异步对象 var xmlHttp; //封装方法 function CreateXMLHTTP() { try { xmlH ...

  9. Test注解的两个属性:expected和timeout

    JUnit4:Test文档中的解释: The Test annotation supports two optional parameters. The first, expected, declar ...

  10. mysql增量备份 percona-xtrabackup

    先说下实际环境 阿里云买的ESC跑的mysql服务,目前由于数据量过大,数据库目前有800多GB,每次全备需要等20多个小时才能够完成,然后就想到做增量备份,写下此文档 一.测试环境 [root@lo ...