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