Linux和GNU系统的关系详解
⽬录
每天都在运⾏的Linux系统其实是?
Linux内核和 GNU 系统简介
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编译器
今天有许多不同的 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系统内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论