Linux和GNU系统的关系详解

 更新时间:2022年01月05日 10:42:11   作者:懒兔子宝宝  
大家好,本篇文章主要讲的是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系统内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux网络DNS域名如何解析服务

    Linux网络DNS域名如何解析服务

    详解DNS系统的作用、分布式数据结构、系统类型、查询类型及原理,介绍如何配置DNS正向解析,包括环境搭建、修改配置文件、启动服务等
    2024-09-09
  • Ubuntu 12.04 64位 对Python 源代码编译详解

    Ubuntu 12.04 64位 对Python 源代码编译详解

    这篇文章主要介绍了Ubuntu 12.04 64位 对Python 源代码编译的相关资料,需要的朋友可以参考下
    2017-01-01
  • linux中rm命令使用详解

    linux中rm命令使用详解

    这篇文章主要详细介绍了linux中rm命令使用方法以及使用实例分享,十分全面,这里推荐给需要的小伙伴。
    2015-01-01
  • 在Linux中如何查看服务器整体情况

    在Linux中如何查看服务器整体情况

    这篇文章主要介绍了在Linux中如何查看服务器整体情况问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Linux 服务器同步 Rsync同步服务器文件

    Linux 服务器同步 Rsync同步服务器文件

    服务器之间常常要保持些文件或目录的一致,比如一些大的软件下载网站,它们通常使用多台服 务器来提供下载服务。
    2009-08-08
  • centos开机自动启动RabbitMq软件的方法

    centos开机自动启动RabbitMq软件的方法

    本文详细讲解了centos开机自动启动RabbitMq软件的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以收藏下
    2021-11-11
  • Ubuntu中Opencv的安装使用教程

    Ubuntu中Opencv的安装使用教程

    Opencv就不解释了,是个很有名的图形库。下面这篇文章主要介绍了Ubuntu中Opencv安装使用的相关资料,文中介绍的非常详细,需要的朋友们下面来一起看看吧。
    2017-04-04
  • Linux内核设备驱动之虚拟文件系统笔记整理

    Linux内核设备驱动之虚拟文件系统笔记整理

    今天小编就为大家分享一篇关于Linux内核设备驱动之虚拟文件系统笔记整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • linux进程监控与自动重启的简单实现方法

    linux进程监控与自动重启的简单实现方法

    这篇文章主要给大家介绍了关于linux进程监控与自动重启的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用linux具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Linux进程间通信(IPC)的几种方式总结

    Linux进程间通信(IPC)的几种方式总结

    进程间通信是指至少两个进程或线程间传送数据或信号的一些技术或方法,每个进程都有自己的一部分独立的系统资源,彼此是隔离的,为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信,本文就给大家介绍几种Linux进程间通信的方式,需要的朋友可以参考下
    2023-09-09

最新评论