金迅网络 发表于 2023-10-25 21:15:52

Linux和GNU/Linux是什么关系?

最近在入门linux,搞不懂这两者的区别。以及Linux内核和Linux发行版的区别。请各位大佬求解,谢谢。

cn521 发表于 2023-10-25 21:16:34

先给图片:

http://picx.zhimg.com/v2-813106fabf95336ead7388aa8de8156a_r.jpg?source=1940ef5c
从Unix 的起源说起
1969年,由 Ken Thompson 在 AT&T 贝尔实验室实现的,使用的是汇编语言。
1970年,Ken Thompson 和 Dennis Ritchie 使用 C语言对整个系统进行了再加工和编写,使得 Unix能够很容易的移植到其他硬件的计算机上

http://picx.zhimg.com/v2-94a67d37d7562cb9b678dafac79bc7cd_r.jpg?source=1940ef5c
起初 AT&T 没有把 Unix作为正式商品,仅以分发许可证的方法,对 Unix收取很少的费用,就把 Unix的源代码散发到各个大学。由于 Unix收费低,很多厂商就选择了 Unix作为他们生产的计算机使用的操作系统
Unix 的两大分支
70年代中后期,在Unix发展到了版本6之后,AT&T 认识到了 Unix的价值,成立了 Unix系统实验室(Unix System Lab,USL)来继续发展Unix
而几乎同时,加州大学伯克利分校计算机系统研究小组(CSRG)也在对Unix进行研究,并做了大量改进工作,组成一个完整的 Unix系统 ── BSD Unix(Berkeley Software Distribution,伯克利软件套件),向外发行
BSD Unix有很大的影响力,例如美国国防部项目ARPANET(阿帕网),发展成为了Internet,在 BSD Unix中最先实现了 TCP/IP协议,使 Internet和 Unix紧密结合在一起
AT&T吸收了 BSD Unix中已有的各种先进特性,并结合其本身的特点,推出了 Unix System V 版本,至此 Unix形成两大分支
1992年,Unix系统实验室指控一家发行商业 BSD Unix的公司(BSDI),违反了AT&T的许可权,发布自己的 Unix版本。 后来,Unix系统实验室被 AT&T 卖给了 Novell公司,Novell不打算陷入这样的法律纷争中,因此就采用了比较友好的做法。伯克利的 CSRG被允许自由发布 BSD,但是其中来自于 AT&T 的代码必须完全删除
什么是GNU/GPL
GNU计划是由自由软件之父 Richard Stallman 在1983年9月27日公开发起的。是 GNU's Not Unix 首字母的缩写,它的目标是发展一个类似UNIX,完全自由的操作系统
General Public License(通用公共许可协议,GPL)是一种版权形式,是 Richard Stallman 在开放源代码软件发行的实践中,总结出的一套保护自由软件的条款。商业软件版权中,会用到 Copyright,而在GPL中,则使用 CopyLeft
GPL的中心思想是自由软件由开发者提供源代码,任何用户都有权使用、拷贝、扩散、修改该软件,同时用户也有义务将自己修改过的程序代码公开。允许用户在分发过程中收取一定的费用。但是,用户在再分发时,要保证新用户能取得源代码的权力。保证新用户与自己相同,在得到软件时,同时得到同自己一样的权力。在GPL下,不存在盗版,但是用户不能将软件据为己有(比如申请软件专利等),因为这将侵犯 GPL版权
GNU/Linux来了
到了90年代,GNU计划已经发现或者完成了构建一个操作系统所需的,除了内核之外的所有主要成分
1991年,Linus Torvalds开发了一个自由的内核。1992年,把 Linux和几乎完成的 GNU系统结合起来,就构成了一个完整的操作系统:一个基于 Linux的 GNU系统(GNU/linux)。值得注意的是 Linux并没有使用 Unix的源码,它是按照公开的 POSIX标准重新编写的

http://picx.zhimg.com/v2-3eb55f813b1056aacfb5ee56820444c4_r.jpg?source=1940ef5c
商业化的 Linux有 RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等
安迪西:Unix 和 Linux 那些事

秋之舞 发表于 2023-10-25 21:16:58

就是说法的不同,严格意义上说,Linux仅指Linux内核。用最核心的东西代替这一套系统,似乎也说得过去。
但是现在大家都用Linux代替整个操作系统,也就是Linux发行版,但是这个东西(整个系统)其实除了内核以外,其他的都不叫linux,其中绝大多数基础软件都是开源软件,底层最重要的 glibc、编译器 gcc、二进制工具、核心工具 coreutils、bash、加密工具 gnupg 、压缩/解压工具 gzip 等等,它们都来自GNU组织。
也就是说,一个操作系统最核心的部分是由Linux内核和GNU组织的一大堆工具组成,在这基础之上才是其他的应用软件,比如邮件的收发工具、浏览器了、办公软件了、绘图软件,等等。
GNU 所有软件列表所以,一个完整的Linux发行版取名叫 GNU/Linux 不过分吧?
GNU 是一杆大旗,正是有了 GNU 这样千千万万的组织存在,并持续不断地努力,才有我们今天的多种「选择」,可以选专有软件,也可以选择自由软件,否则可能就不得不花钱给MS了,还是花了钱都不痛快的那种。
<hr/>总的来说就是,『Linux』这个说法在不同场合含义不同。说到内核相关的,比如驱动、文件系统、内存管理方式、网络、防火墙等等涉及内核的,就可能是在专指内核。
说到用哪个版本的 Linux,是ubuntu还是红帽系的,那就是在说发行版。

robyluo 发表于 2023-10-25 21:17:05

参考我的这篇回答,我觉得应该讲得很清楚了。
Linux 为什么又称为 GNU/Linux?反对关于“不需要区分Linux和GNU/Linix”的提法:如果你是日常闲聊,那么不做区分,这没问题。但如果是专业领域的人员,那么一定要区分清楚,否则你可能连“哪方面的内容应当到哪里去查最权威的资料”都搞不清楚。

xingji655 发表于 2023-10-25 21:18:04

Linux本身是一个内核,你可以理解为人的心脏,加上其他的东西才能构成一个人。
有些系统比如BSD、Windows会考虑尽最大可能自己开发其他东西,或者叫用户层,而Linux选择用GNU提供的用户层。
所以GNU/Linux其实就是Linux+GNU构成的操作系统,而Linux是其内核。
Linux当然也可以不用GNU,比如安卓,比如OpenWrt,比如Alpine Linux,这些虽然心脏用的还是Linux,但是用户层却是用的其他的,所以这些不是,并且不能被称作GNU/Linux。
Linux属于比较特殊在于内核和系统名都被称为Linux,所以容易混淆,很多人都分不清Linux内核和Linux操作系统。而在之前Unix年代,卡内基梅隆大学开发的Mach内核,使用它的系统却不叫Mach(比如现在苹果还在用的一系列系统,比如OSF/1和Tru64 UNIX,比如GNU Hurd),这确实是一个令人迷惑的点。
<hr/>评论说我说错了,Linux仅能指Linux内核,发行版只能是GNU/Linux,那就搬出来维基百科的原文嘛…
Linux - WikipediaLinux(/ˈlɪnʊks/ LIN-uuks) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution (distro), which includes the kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses and recommends the name "GNU/Linux" to emphasize the use and importance of GNU software in many distributions, causing some controversy.当然你要是说a family of operating systems不能算作operating system,只有Linux distro算也行…
<hr/>LinuxHub喵,关注LinuxHub谢谢喵~

浏次最览 发表于 2023-10-25 21:18:25

GNU官网上写的很明白,学习这些东西的时候除了课本和网课,官方文档、博客、社区和源码在适当的条件下也是有用的,要多看
GNU/Linux 问答为什么你称该系统为GNU/Linux而不是Linux?(#why)
大多数使用Linux内核的操作系统发行版基本上是GNU操作系统的修改版。我们在1984年就开始开发GNU工程,比Linus Torvalds开始写他的内核要早好多年。我们的目标是开发一个完全的自由操作系统。当然,我们没有自己开发所有的部件—但是我们指引了方向。我们开发了大多数核心部件,它们构成了整个系统单一的最大贡献部分。基础版本也来自我们的贡献。
为了公平,我们至少应该被平等对待。
请参看Linux和GNU系统与从未听说过GNU的GNU用户来了解更多说明,并参看GNU工程来了解历史。
为什么名称是重要的?(#whycare)
虽然Linux内核的开发者对自由软件社区做出了贡献,但是其中许多人并不关心自由。认为整个系统就是Linux的人往往弄混淆了,他们赋予了这些内核开发者实际上他们在社区中根本没有扮演的历史角色。然后,他们就给这些开发者的观点以超乎寻常的份量。
称该系统为GNU/Linux确认了我们的理想在社区建设中的角色,并帮助公众了解这些理念的实际重要性。
GNU和Linux究竟是什么关系?(#what)
GNU 操作系统和 Linux 内核是独立的软件项目,它们完成互补的工作。通常,它们会打包在 GNU/Linux 发行版 里,并被一起使用。
为什么大多数人会叫该系统为“Linux”?(#howerror)
称该系统为“Linux”是一个混淆,该混淆传播得比正确的信息要快。
把Linux和GNU系统结合在一起的人不曾意识到他们的努力合起来是什么。他们的注意力集中在Linux部分,而没有意识到GNU才是更大的部分。他们开始称之为“Linux”,虽然这个名字并不适合他们所获得的系统。几年后我们才意识到这个问题,并请求人们更改。那时,这个混淆已经遥遥领先了。
大多数称该系统为“Linux”的人从来没有听说过为什么这不对。他们看到其他人这么用,就理所当然地认为这一定是对的。“Linux”这个名字还传播了错误的系统渊源,因为人们一般会认为系统的历史一定和该名字相关。比如,他们通常相信系统的开发是由Linus Torvalds在1991年开始的。这个错误的场景又会加强系统应该叫做“Linux”的想法。
本文中的许多问题表达了人们想要为他们习以为常的名字辩护的诉求。
我们是否总要说“GNU/Linux”而不要说“Linux”?(#always)
不是总要——只有当我们在谈论整个系统时。如果你特指内核,那么你应该说“Linux”,其开发者选择的名字。
当人们称整个系统为“Linux”时,其后果就是他们用内核的名字来称呼整个系统。这造成了许多混淆,因为只有专家才可以辨别什么时候说的是内核什么时候说的是整个系统。把整个系统称为“GNU/Linux”,并把内核称为“Linux”,你就避免了歧义。
如果没有GNU,Linux还会这么成功吗?(#linuxalone)
如果是那样的话,可能就不会有像今天这样的GNU/Linux系统,而且可能没有任何的自由操作系统。除了GNU工程和(后来的)Berkeley CSRG,在20世纪80年代没有人会开发自由的操作系统,CSRG也是在GNU工程的明确请求下开始代码自由化的。
Linus Torvalds部分受到1990年在芬兰的一场关于GNU的演讲的影响。没有这个演讲,他也可能会写出一个类Unix的内核,但是它可能不会是自由软件。Linux在1992年,当Linus把它按GNU GPL发布时,成为自由软件。(参看0.12版的发布说明。)
即使Torvalds使用其他自由许可证发布Linux,单单一个自由的内核也无法改变世界。Linux正好适合一个更大的框架、一个完全的自由操作系统:GNU/Linux,这样它才变得显眼。能看得出来Stallman大概还是对Linux抢了风头不太开心才在这种咬文嚼字的问题上很倔
<hr/>当然有些操作系统就把GNU的组件剔除的比较干净,这种就可以说它是Linux发行版而不是GNU/Linux发行版,比如Android(当然严格来说里面还是沾一丁点GNU的)
Android ,在争议中逃离 Linux 内核的 GPL 约束Android and Users' Freedom不过对Android的争议很大,有些人出于它不遵守GNU的哲学或者使用了大幅修改过的内核等各种原因认为它就不该算Linux发行版
<hr/>另外对这种咬文嚼字的行为也有很多质疑,有些人觉得一个发行版里面既不属于Linux也不属于GNU项目的部分多了去了,真要给这些操作系统严格命名的话能写成一个花名册;
而且像Android这种操作系统来说,它除了内核的部分以外都不属于Linux,这些部分和传统的桌面版Linux上的部分也有区别,于是有人管它叫做Android/Linux
还有人觉得,按照这种命名规则的话,微软的WSL应该也可以叫做GNU/Windows或者GNU/NT
(2) Does Android use any bits from GNU? : linux (reddit.com)弱弱的问一下,android手机为什么不能刷linux?所以说我觉得,这玩意你知道就行了,自己喜欢怎么叫就怎么叫吧,真掰扯的话掰扯不明白的
页: [1]
查看完整版本: Linux和GNU/Linux是什么关系?