Linux和GNU系统的关系详解
每天都在运行的linux系统其实是?
今天广泛使用的 gnu 版本通常被称为“linux”,而它的许多用户并不知道 它基本上是由gnu 项目开发的 gnu 系统 。
linux内核 和 gnu 系统简介
确实有一个 linux,这些人正在使用它,但它只是他们使用的系统的一部分。linux 是内核:系统中的程序,它将机器的资源分配给您运行的其他程序。内核是操作系统的重要组成部分,但它本身毫无用处;它只能在完整操作系统的上下文中运行。linux 通常与 gnu 操作系统结合使用:整个系统基本上是 gnu 加上 linux,或 gnu/linux。所有所谓的“linux”发行版实际上都是 gnu/linux 的发行版。
许多用户不了解内核(linux)与整个系统(他们也称为“linux”)之间的区别。名称的模糊使用无助于人们理解。这些用户往往认为,linus torvalds 在 1991 年开发了整个操作系统,有一点帮助。
linux内核 和 gnu 系统之间的关系详解
程序员一般都知道linux是一个内核。但是,由于他们通常也听说过整个系统也被称为“linux”,因此他们经常设想一段历史,可以证明以内核命名整个系统是合理的。例如,许多人认为,一旦 linus torvalds 完成 linux 内核的编写,其用户就会四处寻找其他免费软件,并发现(无特殊原因)制作类 unix 系统所需的大多数东西都已经可用的。
他们的发现并非偶然——它是不完全完整的 gnu 系统。可用的*软件加起来就是一个完整的系统,因为 gnu 项目自 1984 年以来就一直在努力制作一个。在gnu 宣言中,我们提出了开发一个*的类 unix 系统的目标,称为 gnu。gnu 项目的 初始公告还概述了 gnu 系统的一些原始计划。到 linux 启动时,gnu 几乎完成了。
大多数*软件项目的目标是为特定工作开发特定程序。例如,linus torvalds 着手编写类 unix 内核 (linux);donald knuth 着手编写文本格式化程序 (tex);bob scheifler 着手开发一个窗口系统(x window system)。用来自项目的特定程序来衡量这种项目的贡献是很自然的。
如果我们试图以这种方式衡量 gnu 项目的贡献,我们会得出什么结论?一家 cd-rom 供应商发现,在他们的“linux 发行版”中,gnu 软件是最大的单一队伍,约占总源代码的 28%,其中包括一些必不可少的主要组件,没有这些组件就没有系统。linux 本身约占 3%。(2008 年的比例相似:在 gnewsense 的“主”存储库中,linux 为 1.5%,gnu 软件包为 15%。)因此,如果您要根据谁在系统中编写程序来为系统选择一个名称,最合适的单一选择是“gnu”。
但这并不是考虑这个问题的最深层次的方法。gnu 项目不是,也不是开发特定软件包的项目。这不是一个开发 c 编译器的项目,尽管我们这样做了。虽然我们开发了一个文本编辑器,但它不是一个开发文本编辑器的项目。gnu 计划着手开发一个完整的*类 unix 系统:gnu。
许多人为系统中的*软件做出了重大贡献,他们的软件都值得称赞。但它之所以是一个集成系统——而不仅仅是一组有用程序的集合——是因为 gnu 项目着手将它变成一个系统。我们列出了制作完整免费系统所需的程序清单,我们系统地查找、编写或找人编写清单上的所有内容。我们编写了必不可少但乏味的 [1]组件,因为没有它们您就无法拥有一个系统。我们的一些系统组件,即编程工具,自己在程序员中流行起来,但我们编写了许多不是工具的组件 [2]. 我们甚至开发了一个国际象棋游戏 gnu chess,因为一个完整的系统也需要游戏。
到 90 年代初,除了内核之外,我们已经将整个系统组装在一起。我们还启动了一个内核,即 gnu hurd,它运行在 mach 之上。开发这个内核比我们预期的要困难得多; gnu hurd 于 2001 年开始可靠地工作,但距离让人们普遍使用还有很长的路要走。
幸运的是,由于 linux,我们不必等待 hurd。torvalds 在 1992 年解放了 linux,它填补了 gnu 系统的最后一个主要缺口。然后人们可以 将 linux 与 gnu 系统结合起来,形成一个完整的*系统——一个也包含 linux 的 gnu 系统版本。换句话说,gnu/linux 系统。
让他们很好地协同工作并非易事。一些 gnu 组件 [3]需要大量更改才能与 linux 一起使用。将一个完整的系统集成为一个“开箱即用”的发行版也是一项艰巨的工作。它需要解决如何安装和引导系统的问题——我们还没有解决这个问题,因为我们还没有达到那个点。因此,开发各种系统发行版的人做了很多必不可少的工作。但是,就事物的性质而言,这是肯定会由某人完成的工作。
gnu工程支持gnu / linux系统,以及在gnu系统。该fsf资金的linux相关的扩展,gnu c库的改写,所以,现在他们已完全融入,以及最新的gnu / linux系统中使用当前版本的库没有变化。fsf 还资助了 debian gnu/linux 的早期开发阶段。
今天有许多不同的 gnu/linux 系统变体(通常称为“发行版”)。它们中的大多数都包含非*程序——它们的开发人员遵循与 linux 相关的“开源”哲学,而不是gnu的 “*软件”哲学。但也有 完全免费的 gnu/linux 发行版。fsf 支持其中一些的计算机设施。
制作免费的 gnu/linux 发行版不仅仅是消除各种非*程序的问题。现在,通常的 linux 版本也包含非*程序。这些程序旨在在系统启动时加载到 i/o 设备中,它们以一长串数字的形式包含在 linux 的“源代码”中。因此,维护免费的 gnu/linux 发行版现在也需要维护linux的免费版本。
无论您是否使用 gnu/linux,请不要混淆使用“linux”这个名称来混淆公众。linux 是内核,是系统必不可少的主要组件之一。整个系统基本上是gnu系统,加入了linux。当您谈论这种组合时,请称其为“gnu/linux”。
总结
到此这篇关于linux和gnu系统的关系详解的文章就介绍到这了,更多相关linux和gnu系统内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: Spark 系列(五)—— Spark运行模式与作业提交
下一篇: 图标字体的制作