我查了一下操作系统的字典定义:
支持计算机基本功能的低级软件,例如调度任务和控制外设。
嗯,这听起来很像内核的定义。
Linux 处理所有硬件接口;用户态程序处理其他一切。然而我不断听到人们说“Linux 是一个内核,而不是一个操作系统”。所以呢是操作系统?为什么 Linux 不是其中之一?
答案1
答案2
曾几何时...
...两位著名的电脑迷,布莱恩·W·克尼汉 (Brian W. Kernighan) 和罗布·派克 (Rob Pike) 写了一本书,名为Unix 编程环境(1984 年,ISBN 0139376992)以下两段引文预示着即将出现的问题(第 1 页):
《什么是‘UNIX’?从狭义上讲,它是一种分时操作系统核心:控制计算机资源并将其分配给用户的程序。”
好的,UNIX=内核。然而,在下一段中,Kernighan 和 Pike 说(第 1 页):
“从更广泛的意义上讲,‘UNIX’通常不仅包括内核,还包括编译器、编辑器、命令语言、复制和打印文件的程序等基本程序。”
嗯,所以它也可以用来表示内核加上围绕内核构建的“环境”。
GNU 项目和 Linux 内核
时间回到 20 世纪 80 年代左右Unix 编程环境事实上已发表,理查德·斯托曼 (Richard Stallman) 启动了 GNU 项目为了构建一个更广泛意义上的自由而不是啤酒中的“操作系统”,一堆 GNU 工具位于“The Hurd”之上,而“The Hurd”又位于 GNU Mach 微内核之上。这个 GNU 操作系统从未出现过,部分是因为事实证明 Mach-plus-Hurd 系统很难创建,部分是因为另一个内核出现并且大部分工作转移到了这个新内核。
1991 年 Linus Torvalds 发布了他的 Linux 内核(这个名字背后也有一段历史:该项目的“工作名称”显然是 Linus 的 UNIX(或 MINIX,实际上是他“克隆”的)的“Linux”,Linus 想将其称为“Freax”,但 Ari Lemmke 保留了 Linux 名称)。 Linux 遵循 GPL v.2(没有“以及以后...”条款),它(仍然是)用 gcc 编译,并且 GNU 工具被设置在这个内核之上,成为...
取决于你问的是谁,“Linux”或“Gnu\Linux”(阅读 Gnu-slash-Linux)。
命名争议
斯托曼坚持在名称中包含“GNU”。 “公认的观点”是,这是纯粹的语义辩论。在实践中,使用内核名称来指定整个“操作系统”是有优先权的,正如 Kernighan 和 Pike 开头的引述所表明的那样。有些人出于实用或美观的原因坚持将系统称为“Linux”,例如在 Linux(或 Gnu\Linux...)手册中Linux 是如何工作的作者:布莱恩·沃德(Brian Ward),沃德说:“我尝试尽可能使用最常见、最不尴尬的名字。” (第 xxii 页,ISBN 9781593275679)。
有些人试图按重要性对操作系统的各个部分进行排名,并坚持使用最能反映这些重要部分的名称。 Stallman 坚持认为 Linux 是 Gnu\Linux 生态系统的一小部分,强调工具和编译器。相比之下,William F. Shots 在他的书中Linux 命令行,坚持认为 Linux\GNU“在技术上会更准确,因为内核首先启动,其他一切都在其之上运行。” (第 xxix 页,ISBN 9781593273897)。由于现在有一个不依赖于 GNU 位的主要 Linux 发行版——它被称为 Android——区分 GNU\Linux 和其他\Linux 的务实理由有所增强。
Linus Torvalds 于 1996 年发表的文章,转载于 Peter H. Salus 的守护进程、Gnu 和企鹅:自由开源的历史(第 143-4 页,ISBN 9780979034237),Linus 说:
人们如何称呼 Linux 并不重要,只要功劳归于应得的地方(双方)。就我个人而言,我会继续称其为“Linux”......
可见性问题
有时被忽视的是,坚持在名称中包含“GNU”还有另一个原因,那就是能见度。理查德·斯托曼(Richard Stallman)有自己的哲学需要阐明,也有一个需要推广的组织。他希望人们知道他的组织的名称,他希望人们参与、使用和分享 GNU 工具、提供捐赠、作品,所以斯托曼当然希望名称中包含“GNU”。在一篇名为从未听说过 GNU 的 GNU 用户斯托曼感叹许多日常使用 GNU 工具的人从未听说过 GNU。如今几乎每个人都听说过 Linux。
这种促销虽然有时看起来很老套,但却很有效。听到 GNU/Linux 命名争议让我想更多地了解 GNU 和 FSF。我隐约知道理查德·斯托曼是一个从脚趾间吃东西的嬉皮模因,但只有在深入了解这个烦人的 GNU\Linux 事务之后,我才读到了他的论文集之类的东西自由如自由。一个准神话般的斯托曼教条主义者(如果你愿意的话,可以说是斯托曼狂人)主导了这个话题的讨论,所以头脑冷静的事情,比如他决定主要通过法律文件来阐明他的哲学愿景,或者诸如“战略问题”之类的事情“ 那就是较小的 GPL没有得到他们应有的宣传。
斯托曼的想法继续产生真正的影响,而且他并不是唯一一个阐明“自由文化”愿景的人。实际上,自由文化是哈佛大学罗伊·L·弗曼法学教授劳伦斯·莱斯格 (Lawrence Lessig) 所著的一本书的名称创作共用, 和2016年总统候选人落选。在这本书中,莱西格说:
本书的标题和大部分论点的灵感都来自理查德·斯托曼和自由软件基金会的作品。事实上,当我重读斯托曼自己的著作时,尤其是《自由软件,自由社会,我意识到我在这里提出的所有理论见解都是斯托曼几十年前描述的见解。
在实践中,我经常使用“Linux”,但我越来越迷恋 FSF 的愿景,所以我可能会加入坚持不懈的 GNU\Linux 人群。
或者……这个想法激起了我的恶作剧感……如果我们给它起一个不包括 GNU 和 Linux 的名称,比如 Ginux (gee-nix),会怎么样?那会……很有趣。只是一个想法。
后记
Linux 内核发布近二十年后,这个话题仍然让人们兴奋不已(或许是过度兴奋)。Bryan Lunduke 最近在Linux 杂志被称为为什么 Linux 拼写错误他得出结论,“Linux”应该拼写为“Linucs”,就像 UNIX(以及 MINIX 和 Linux)所基于的旧 MULTICS 一样。截至2018年3月15日,该文章已有123条评论。有些人对此非常重视,伦杜克先生觉得有必要制定一个YouTube 视频回应到“争议”。这个问题会让 FLOSS 书呆子烦恼永远。
答案3
我会尽量使其简短但足够容易理解:
操作系统是人类和电子组件之间的接口。 Linux 的内核具有了解广泛硬件的指令,但它没有接口。没有控制台,没有窗口,没有命令,什么都没有。这就是为什么当您提到大多数人正在使用的标准“linux”操作系统时,您应该始终说“GNU/Linux”。 GNU 是标准 Linux 内核的“包装器”,拥有足够的资源使硬件能够完成用户想要完成的任何任务。
Ubuntu、Debian、Fedora、Redhat、Slackware 等……都是“风味”。一组(通常)GNU 软件作为界面,安排为(有时)一个人想要通过颜色、效果、工具等“塑造用户体验”
答案4
我同意有一个名为 Linux 的内核。我可以观点到它。
如果有一种操作系统叫Linux,那么它是什么?什么是 Linux 操作系统的一部分,什么不是 Linux 操作系统的一部分?
我们的定义如何适用于 Android 这样的操作系统? Android 使用 Linux 内核。然而,它与当前安装在 Linus Torvald 工作站上的基于 Linux 的操作系统几乎没有什么共同点。
定义操作系统的一种方法是“独立软件供应商”可以为其编写应用程序软件的产品。您可以看到这个定义反映在Linux 标准库。然而 Ubuntu(还有 Debian)不再尝试支持 LSB。
因此,没有一个明确定义的平台系列可以作为“特定的”Linux 操作系统。您可以识别许多使用 Linux 内核的不同操作系统,例如 -
- 乌班图
- 软呢帽
- “Android开源项目”+“其他与硬件相关的[...]库”
- Android + 专有硬件库 + Google服务和店铺,用于中国境外的大多数手机。
- OpenWrt
假设您在 Ubuntu Desktop 18.04 上使用图形应用程序。上面的定义告诉我们GNOME图形界面是操作系统的一部分。
GNOME 是 Ubuntu Desktop 18.04 和 Fedora Workstation 29 的一部分。这是两个密切相关的操作系统。当有人为两种操作系统打包软件时,他们将利用它们之间的共性。 (最近的例子在这里)。从这个意义上说,人们依赖 Linux 操作系统的共同血统。但这是一个临时过程。它没有提供通用Linux操作系统的具体定义。
扁平包装是一个比较通用的项目。它设计为在各种基于 Linux 的操作系统上运行,并为应用程序提供通用接口。 (加速图形接口比如OpenGL但这是一个特殊的挑战。)有人可能会认为这些接口定义了“the”Linux OS 的基础,足以运行各种图形应用程序。我认为 FlatPak 接口非常有趣,但我无法证明这个论点。