Menu Close

什么是Linux 和 GNU 操作系统? 什么是GNU/Linux 发行版 ?

GNU/Linux 是一个操作系统,管理计算机的大型软件。 它与 Microsoft Windows 类似,但完全自由。GNU/Linux 是更准确的名称,然而通常人们称之为 “Linux”。

GNU/Linux 不是某一公司的产品,而是由许多公司、小组多方多人协作的成果。事实上 GNU/Linux是核心组件,它分支为诸多不同的产品,称为发行版

发行版彻底改变了 GNU/Linux 的外观和功能。从得到全力支持的完整的大型系统(由公司支撑)到可以嵌入 USB 中或者运行在陈旧的计算机之上的轻型系统(常由志愿者开发),不一而足。

什么是GNU/Linux 发行版 ?

每天,大量的用户在毫不知情的情况下在他们的计算机上运行着修改版的 GNU 操作系统。而这个现在广为使用的修改版的 GNU 操作系统通常被称为“Linux”,但是很多它的用户并不知道,它其实就是 GNU 计划开发的 GNU 操作系统2。

Linux 也确实存在,并且那些用户也确实是在使用它,不过它仅仅是这些用户所使用的操作系统的一部分。Linux 仅仅是一个内核: 它就是分配你硬件设备上的资源给其他你所使用的程序的一个特殊程序。内核是操作系统中不可或缺的一部分,但是只有内核是远远不够的。内核仅能在完整操作系统的环境下才能正常工作。一般来讲,Linux 会与 GNU 操作系统合起来使用: 整个系统就是添加了Linux 内核的 GNU 操作系统,或者简而言之,GNU/Linux。所有所谓的 “Linux” 发行版其实就是 GNU/Linux 发行版。

很多用户并不能区分内核(即 Linux)和整个操作系统(他们也称为 “Linux”)。这种混淆视听的称呼并不能帮助人们正确理解这一区别。所以人们通常会认为1991年 Linus Torvalds 在没有借助太多其他帮助的情况下就开发出了整个操作系统。

程序员们基本上都知道 Linux 只是个内核。但是他们通常会听到别人把整个操作系统都称为 Linux,然后他们就会跟从接受以内核名称命名操作系统的传统。比如,很多人都相信当 Linus Torvalds 编写完 Linux 内核之后,它的用户们去寻找其他与之搭配使用的自由软件时,(毫无道理地)发现用于构建类 Unix 系统的一切其实都已然存在。

真实的情况是,当时的他们发现了并不完全完整的 GNU 系统,而这一发现决非偶然。当时已有的自由软件3加在一起一同组成了一个完整的操作系统。这是因为 GNU 项目从 1984 年就开始致力于实现这一目标。在 GNU 宣言(GNU Manifesto)4当中,我们就确立了开发一个称为 GNU 的类 Unix 的自由操作系统的目标。GNU 计划的初始声明(The Initial Announcement)5还包括了 GNU 操作系统开发计划的部分大纲。在 Linux 开始开发前,GNU 几乎就要完成了。

绝大多数的自由软件项目都是以“为某项具体的工作开发一款具体的软件”为目的。比如,Linus Torvalds 开发了类似于 Unix 的内核(Linux); Donald Knuth 编写了一个格式化文本工具(TeX); 而Bob Scheifler 则开发了一种窗口管理系统 (X 窗口管理系统)。对于这类软件而言,衡量特定的软件对该项目的贡献是简单而自然的。

但是如果我们以这种方法去衡量 GNU 项目的贡献的话,我们会得出怎样的结果呢?某个 CD-ROM 的供应商发现在他们的 “Linux 发行版”中,GNU 软件6是其中最大的必备依赖软件,约占全部源代码数量的28%,并且还包括了构成完整操作系统不可或缺的一部分组件。而 Linux 自己只占 3%(截至 2008 年,此比例仍然准确: 在 gNewSense 的“主源”当中,Linux 占 1.5%,而 GNU 软件包占了 15%)。所以如果你想以写操作系统的人命名这个操作系统的话,最为确切的单词名字恐怕是“GNU”。

但这并不是考虑这个问题最深层次的方法。GNU 项目过去不是,现在也不是仅仅只创造某些特定软件的一个项目。它不是只开发一个 C 语言编译器的项目7,虽然我们确实开发了一个 C 语言编译器。它也不是只开发一个文本编辑器的项目,虽然我们也做过。GNU 项目是为了开发一个完全自由的类 Unix 操作系统——GNU。

很多人都为自由软件做过贡献,他们理应被提名。但是问题在于这是 一个完整的操作系统 ——并不是一个有用软件的简单集合——因为 GNU 项目就是要创造这样一个操作系统。我们已经列出了一个完整操作系统所需软件的清单,并且我们系统性地发掘、编写,或者找人编写清单上的所有条目。我们编写了一些不太吸引人却又不可或缺的组件8,因为操作系统的正常运行不能没有这些软件。在我们系统组件中,有一部分是编程工具,并且在程序员中流行了起来。但是我们也编写了很多不是工具的软件9。我们甚至还编写了一个棋类游戏,GNU Chess,因为完整的操作系统还需要一些游戏。

在 90 年代初期,我们已经搞定了一个除了内核之外的系统。我们其实也开始开发一个内核,GNU Hurd (http://gnu.org/software/hurd/hurd.html),一个运行于 Mach 的内核。开发这个内核的难度远超我们的想象; GNU Hurd 在 2001 年终于能稳定运行了,但是距离被人们日常使用的目标仍然相差甚远10。

幸运的是,因为有 Linux 的存在,我们并不需要等待 Hurd。在 1992 年,Torvalds 自由化了 Linux 之后,它填补了 GNU 操作系统中重要的最后一道坎。人们从此可以将 GNU 操作系统11和 Linux 合并使用来创造一个完全自由的操作系统——一个包含Linux 的 GNU 操作系统,即 GNU/Linux 操作系统。去让它们能很好地协同工作并不是一件容易的事。一些 GNU 组件 12 需要作出一些必要的改动才能和 Linux 一起使用。将一个完整系统整合成一个能“开箱即用”的发行版也是一个不小的挑战。这需要解决一个我们之前没有遇到过的问题——如何安装和启动系统,因为我们还没有研究到那一步。因此,制作了各种各样发行版的人们进行了大量的必要工作。但是这就像万物的规律一样,最终会有人去解决这个问题的。

GNU 项目支持 GNU/Linux 系统和 GNU 操作系统 。FSF 资助了重写 GNU C 运行库中与Linux 有关的扩展的工作,这样,最新的 GNU/Linux 操作系统就能毫不修改地使用最新版本的库了。FSF 还资助了 Debian GNU/Linux 的早期开发。

现在,GNU/Linux 操作系统有非常多的发行版 (英文中常称为 “distros”)。它们当中的绝大部分遵从 Linux 的哲学而不是 GNU 的哲学。不过彻底自由的 GNU/Linux 发行版也是存在的13。FSF 赞助了 gNewSense 计算机等设备 (http://gnewsense.org)。

制作一个完全自由的 GNU/Linux 发行版并不只是删去非自由软件程序。现今,原版 Linux 也包含非自由程序。这些程序是在系统启动时加载进 I/O 设备的,大量的这些程序被包含在 Linux 的“源代码”中。因此,维护自由版本的 GNU/Linux 发行版现在还指维护一个自由版本的 Linux (http://directory.fsf.org/project/linux)。

不管你是否使用 GNU/Linux,请不要使用歧义词 “Linux” 迷惑大众。Linux 是内核,系统中主要的不可或缺的组件之一。而整个系统其实是加入了 Linux 的 GNU 操作系统。当你提及这个组合时,请说 “GNU/Linux”。

这篇文章和 “GNU 计划” 都是宣扬 “GNU/Linux” 的好选择。如果你提到 Linux 内核,并且你还想引用更有深度的参考资料, FOLDOC (计算机自由在线词典)http://foldoc.org/linux 是一个你可以信赖的网站。

 BSD操作系统

除了 GNU,另外一个项目也独立完成了一个自由的类 Unix 操作系统。这个操作系统叫 BSD,研发于加州大学伯克利分校(UC Berkeley)。在八十年代期间,它并不是自由的,但是在九十年代早期,它变成了自由的。现存的自由操作系统几乎是非 GNU 即 BSD14。

人们有时候会问 BSD 是不是也是某种版本的 GNU,就像 GNU/Linux 那样。其实 BSD 开发者们也是得到了 GNU 项目的启发才使他们的代码自由了。而且很显然这种行为是由 GNU 的积极分子努力游说的结果,但是他们的代码与 GNU 并无太多交集。

BSD 操作系统现在也使用一些 GNU 软件,就像是 GNU 操作系统及其变种也使用一些 BSD 软件一样。然而,总体而言,它们是两个完全不同、分开发展的操作系统。BSD 开发者没有采用编写内核然后放进 GNU 操作系统的做法,所以将 BSD 称为 GNU/BSD 很显然是不合适的。

“GNU/Linux” 与 “Linux” 有什么不同吗?

一会提到这个,一会提另外一个,它们有什么区别?

Linux原本指代的是GNU系统内部的一个核心部件(称为内核)。准确地说,现在用户运行的是 GNU/Linux 系统的发行版。

实际上,“Linux”这个词要流行得多,今天对整个系统,人们就简单地称其为“Linux”。这引发了极大的争议。

將系統稱為 GNU/Linux 更有意義,在技術上也更正當(終端使用者使用很多的 “GNU” 但只有一點 “Linux”),但同時也有哲學意義:自由軟體運動的力量始於 GNU 專案,至今仍然持續。

称这个系统为 Linux 对那些常认为除了Windows还是Windows的计算机用户来说则更具有吸引力。

为了避免混淆,我们使用 “GNU/Linux” 指代包含 GNU 软件和 Linux 内核的操作系统。如果不带 GNU 的 “Linux” 单独出现,则是指内核。

Linux是一个注册商标吗?

是。你不能以Linux®的名义出售任何软件。该商标归 Linux标志协会所有。

macOS 是 GNU/Linux 的一个发行版吗?

不,macOS 中有一些自由软件的组件,它在技术上类似于 GNU/Linux 系统。但总的来说,它是专有软件:所有关于 Window 的问题也适用于它。

“开源”与“自由软件”是一回事吗?

是,也不是。从技术上讲,绝大多数的开源程序都是自由软件,反之亦然。

从哲学上说,它们有很大区别。“开源”是为了让“自由软件”更能吸引用户而创造的,其支持者认为开源是软件开发的更好方式。

“自由软件”这一术语的支持者不仅看重软件的制作方式,更关注自由,认为“开源”这一术语不得要领。

选用哪个术语只取决于你看软件的视角。

为什么有些 GNU/Linux 发行版要出售,而不是免费获取呢?

有些网站实际上在出售 GNU/Linux 发行版。既然如此,你为什么还要写成“自由并且可以免费使用”呢?

自由软体的概念是,你有复制、研究、修改与分发自由软体的自由。

大多数开发自由软件的公司靠推销围绕其软件的服务来赚钱,而不是软件本身。有时通过打包所有内容进行出售:客户一次性购买CD、书以及支持。软件仍然是自由使用的。

为什么有的 GNU/Linux 发行版并不完全自由?

有些 GNU/Linux 发行版尽管自由,但是却包含限制性的软件。这是为什么呢?

对包含非自由软件,有三种典型的策略:

  • 有些GNU/Linux发行版允许非自由软件是为了使硬件发挥其功能。 某些硬件厂商,比如 NVidia,并不关心用户的自由,这些厂商仅发布私有固件和驱动(有些厂商甚至连这些都没有,比如 Broadcom)。这些私有的固件和驱动并不收费,但是使用的是私有版权协议。Ubuntu 和 Fedora 等发行版引入了这些组件以提高硬件兼容性。
  • 一些 GNU/Linux 发行者并没有在软件自由上妥协,而是确保他们的发行版是完全自由的。Debian就是这样的例子(尽管必要时可以安装非自由软件)。
  • 有些 GNU/Linux 发行版在组合自由与限制性软件上毫不区分。这类发行者不让用户考虑其自身的自由,只顾着为他们产品的技术性能打广告。用这类发行版比用Windows好不到哪儿去。我们看重你的自由,建议你谨慎选择!

个人电脑和工作站用的GNU/Linux发行版

以下这些发行版都可以安装到电脑的硬盘运行并/或可以无安装运行1

发行版 简要描述
Dragora GNU/Linux-Libre Dragora GNU/Linux-Libre,一个基于简洁原则的独立GNU/Linux发行版。
Dyne:bolic Dyne:bolic,一个特别重视音频和视频编辑的GNU/Linux发行版。它是一个“不活跃的”发行版,通常用CD无安装运行。因为它不再有安全更新,所以请离线使用。
guix Guix System 是一个基于 GNU Guix(发音是“geeks”)的先进 GNU/Linux 发行版,这是 GNU 系统的一个纯功能性包管理器。
Hyperbola Hyperbola GNU/Linux-libre,它是基于专注简约的Arch GNU/Linux发行版的长期支持版。
Parabola GNU/Linux-libre Parabola GNU/Linux-libre,一个基于Arch的发行版,注重简洁的软件包和系统管理。
PureOS PureOS,基于Debian的GNU发行版,专注于隐私、安全和便利。
Trisquel Trisquel,一个基于面向小企业、家庭用户和教育中心发行版Ubuntu的GNU/Linux发行版。
Ututo Ututo S,一个100%自由的GNU/Linux发行版。它是第一个由GNU工程确认的完全自由的GNU/Linux系统。

小型设备用的GNU/Linux发行版

以下列举了一些小型的系统发行版。它们针对的是资源有限的设备,比如无线路由器。一个自由的小型系统发行版不是自加载的,但是它必须可以从上面列举的完全自由的系统开发和构造,也许此过程需要一些和该小型系统一起发布的自由工具。

发行版 简要描述
libreCMC libreCMC 是一个针对资源非常有限的设备的嵌入式GNU/Linux发行版。虽然主要是针对路由器,该发行版支持很多设备和应用场景。在2015年,LibreWRT融合到了libreCMC。
ProteanOS ProteanOS 是一个针对嵌入式设备的小快新发行版。它的平台配置功能允许在构造和运行时对不同硬件和应用场景配置二进制软件包。

除教程外,本网站大部分文章来自互联网,如果有内容冒犯到你,请联系我们删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Leave the field below empty!

Posted in Linux 教程

Related Posts