Linux|GNU 是什么,和 Linux 是什么关系?

Linux|GNU 是什么,和 Linux 是什么关系?

文章图片

Linux|GNU 是什么,和 Linux 是什么关系?

GNU是一个自由软件操作系统—就是说 , 它尊重其使用者的自由 。 GNU操作系统包括GNU软件包(专门由GNU工程发布的程序)和由第三方发布的自由软件 。 GNU的开发使你能够使用电脑而无需安装可能会侵害你自由的软件 。
Unix 系统被发明之后 , 大家用得很爽 。 但是后来开始收费和商业闭源了 。 一个叫 RMS 的大叔觉得很不爽 , 于是发起 GNU 计划 , 模仿 Unix 的界面和使用方式 , 从头做一个开源的版本 。 然后他自己做了编辑器 Emacs 和编译器 GCC 。

BSD的网络栈极大地影响了主流操作系统的网络编程接口.这算是后话了.然后可以看到这是90年代 , 也就是Linux刚诞生的时代.因为Linux上来的用户态(shell/toolchain/text editor)基本上都来自于GNU的移植 , 所以被冠上GNU/Linux作为distro的标题 , 也就是说内核是Linux用户态环境都是GNU系 , 发行版主要区别于软件包管理策略所以总体来说GNU这个体系
那么Linux脱离GNU有可能么?其实也是有可能的.比如说:
编译器gcc->clang但是得打一堆 patch主线是动不了的 , BSD这边前几年似乎是迁移到clang 了shell选一个非gnu实现
从glibc换成其他libc实现 , 比如Android用的是bionic(然而为了和glibc兼容从glibc偷了点变量名/函数声明之类的东西 , 他们美其名日[机器生成
并且把这段话加入了license里面 , gnu的人是比较不爽的 , 算是打了cleanroom的擦边球)实用工具尽可能替换为 BSD 系

GNU 是一个计划或者叫运动 。 在这个旗帜下成立了 FSF , 起草了 GPL 等
接下来大家纷纷在 GNU 计划下做了很多的工作和项目 , 基本实现了当初的计划 。 包括核心的 gcc 和 glibc 。 但是 GNU 系统缺少操作系统内核 。
原定的内核叫 HURD , 一直完不成 。 同时 BSD(一种 UNIX 发行版)陷入版权纠纷 , x86 平台开发暂停 。 然后一个叫 Linus 的同学为了在 PC 上运行 Unix , 在 Minix 的启发下 , 开发出了 Linux 。
注意 , Linux 只是一个系统内核 , 系统启动之后使用的仍然是 gcc 和 bash 等软件 。 Linus 在发布 Linux 的时候选择了 GPL , 因此符合 GNU 的宗旨 。

【Linux|GNU 是什么,和 Linux 是什么关系?】最后 , 大家突然发现 , 这玩意不正好是 GNU 计划缺的么 。 于是合在一起打包发布叫 GNU / Linux 。 然后大家念着念着省掉了前面部分 , 变成了 Linux 系统 。 实际上 Debian , RedHat 等 Linux 发行版中内核只占了很小一部分容量 。