Linux 的前世今生:它和 Unix、GNU、BSD、Minix 到底什么关系?

为什么我们叫它"Linux"却常听到"GNU/Linux"?一文讲清 Unix 的诞生、GNU 的自由软件运动、BSD 的诉讼、Minix 的启发,以及 1991 年林纳斯如何用一块 Intel 386 写出了今天统治服务器与安卓的内核。

"Linux" 这个词今天几乎无处不在:你手机里的安卓跑着 Linux 内核,全球一半以上的服务器和几乎百分之百的超算都跑着 Linux,连你公司里的路由器、智能电视、自动售货机背后大概率也是它。但很少有人真正弄清楚过:Linux 到底是怎么来的?它和那个更古老的 "Unix" 是什么关系?为什么有人坚持叫它 "GNU/Linux" 而不是 "Linux"?还有 GNU、BSD、Minix 这些名字,又在这段历史里扮演了什么角色?这篇文章把这条长长的技术家谱一次讲清。

一、一切的起点:Unix 与贝尔实验室(1969)

故事的源头在 1969 年的美国电话电报公司贝尔实验室。当时一群工程师——以肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)为核心——参与了一个名叫 Multics 的庞大分时操作系统项目,结果项目因为太复杂被贝尔实验室退出了。汤普森没死心,趁一台闲置的 PDP-7 小型机,用汇编语言随手写了一个更精简的系统,这就是 Unix 的雏形。有意思的是,"Unix" 这个名字本身就是对 "Multics" 的调侃式缩写,意为"去多化的、单一的系统"。

真正让 Unix 改变世界的有两步。第一,1973 年前后,里奇发明了 C 语言,并和汤普森把几乎整个 Unix 内核用 C 重写了一遍。这一步极其关键:用高级语言写的内核可以轻松移植到不同硬件,而不必为每个机器重写汇编。第二,当时 AT&T 受 1956 年反垄断判决限制不能做软件生意,于是以极低的授权费把 Unix 源码卖给大学。结果 Unix 在加州大学伯克利等高校疯狂传播,催生了后来的 BSD。

二、BSD 分支与一场著名诉讼

伯克利拿到了 Unix 源码后,研究生比尔·乔伊(Bill Joy)在上面加了 vi 编辑器、C shell,逐渐发展成 BSD(Berkeley Software Distribution)。BSD 贡献了互联网最重要的基石之一——最早被广泛使用的 TCP/IP 协议栈,可以说没有 BSD 就没有今天的互联网。但麻烦随之而来:1992 年,AT&T 的子公司 USL 起诉伯克利,声称 BSD 里还残留着 AT&T 的专有代码。这场官司打到 1994 年才以双方和解、伯克利发布清除了 AT&T 代码的 4.4BSD-Lite 告终。今天 FreeBSD、NetBSD、OpenBSD 乃至苹果 macOS 的底层 Darwin,都有 BSD 的血统。

三、GNU:差点就完整的自由操作系统(1983)

1983 年,理查德·斯托曼(Richard Stallman,圈内称 RMS)在麻省理工学院发起了 GNU 项目。GNU 是"GNU's Not Unix"的递归缩写,目标是做一个完全自由、可移植、兼容 Unix 的操作系统。1985 年他创立自由软件基金会(FSF),并推出了影响深远的 GPL 许可证——它规定你拿了自由软件可以随便改、随便分发,但你必须把改后的源码也开放出来。到 1991 年,GNU 几乎把所有用户态组件都做好了:编译器 gcc、命令行 bash、编辑器 emacs、C 库 glibc……唯独缺一个能跑起来的内核。GNU 自己的内核 Hurd 一直难产,始终没能达到生产可用。这个"差一个内核"的缺口,就是后来命名之争的根源。

四、Minix:点燃林纳斯的那本书

1987 年,荷兰阿姆斯特丹自由大学的安德鲁·塔能鲍姆(Andrew Tanenbaum)写了 Minix——一个用于教学、微内核架构、附带完整源码的操作系统,随他的教材《操作系统:设计与实现》一起发行。一个芬兰赫尔辛基大学的学生,正是在新闻组 comp.os.minix 上读着这本书、参与讨论,被深深启发——他就是林纳斯·托瓦兹(Linus Torvalds)。值得一提的是,Linux 早期用了 Minix 的文件系统,但没有一行 Minix 的代码;二者的哲学也截然不同(Minix 为教学而生,Linux 为实用而生)。

五、Linux 内核的诞生(1991)

1991 年,21 岁的林纳斯买了一台 Intel 386 电脑,为了在自己机器上用上类 Unix 环境,开始动手写一个内核。1991 年 8 月 25 日,他在 comp.os.minix 上发了那封著名的帖子:"我正在做一个(免费的)操作系统(只是个爱好,不会像 GNU 那样庞大专业)……";9 月 17 日,0.01 版上传到芬兰大学的 FTP;10 月 5 日,0.02 版第一次能跑起 bash 和 gcc。最关键的一步在 1992 年 1 月(0.12 版):林纳斯把内核从原先"禁止商用"的授权,改成了 GPLv2。这一改意义重大——任何人、任何公司都能合法地使用、修改、分发它,社区和资本这才敢大规模投入。

于是,一个完整的自由操作系统终于拼齐了:Linux 内核 + GNU 用户态 = 一套能用的自由操作系统。这也是为什么 GNU 一方坚持叫它 "GNU/Linux"——内核是林纳斯的,但周边工具几乎全是 GNU 的;而林纳斯本人觉得统称"Linux"就好。这场"该叫什么"的争论至今没统一答案,但对普通用户来说,二者说的其实是同一个东西。

六、从爱好到帝国:里程碑与今天

Linux 内核一路狂奔:1994 年 1.0、1996 年 2.0(支持多 CPU)、2003 年 2.6(奠定了之后十年的服务器基石)。2007 年,Linux 基金会由 OSDL 与自由标准集团合并成立,由包括 IBM、英特尔、红帽、谷歌在内的巨头共同赞助,全职供养林纳斯。版本号后来几次"归零"(3.0、4.0、5.0、6.0),但林纳斯反复强调这只是数字游戏,真正的重点是那些长期支持(LTS)分支。

今天回头看,Linux 赢有其必然:开源许可让全世界都能参与和商用;C 语言写的它几乎能跑在任何硬件上;Internet 让全球开发者靠邮件补丁就能协作;廉价 x86 硬件又给了它取代昂贵 Unix 工作站的土壤。结果就是——它统治了超算(自 2017 年起 TOP500 百分百是 Linux)、服务器与云、安卓手机(内核即 Linux)、以及嵌入式和物联网。一个"只是爱好"的项目,最终成了数字世界的地基。

七、几个常被混淆的概念

讲到这里,新手最容易把几个词搞混,这里一次厘清。内核(kernel)是操作系统的核心,负责调度 CPU、管理内存和驱动硬件,严格来说"Linux"指的只是这个内核。发行版(distribution)才是你真正安装的系统,它把 Linux 内核、GNU 工具链、桌面环境和一堆软件打包成能直接装的成品。桌面环境(Desktop Environment)则是你看得见的图形界面,比如 GNOME、KDE、Xfce,它和内核、发行版都不在同一层。一句话总结:内核 ≠ 发行版 ≠ 桌面环境,三者千万别混为一谈。

顺着这条线还有一个常被问的问题:Linux 和安卓到底什么关系?答案很直白——安卓的底层就是 Linux 内核,只不过上面跑的是谷歌自己的应用框架和运行时,和你电脑上的 Ubuntu 不是一回事。这也解释了为什么 Linux 在桌面上始终没能撼动 Windows 和 macOS 多少,却通过安卓悄悄赢下了全球数十亿台移动设备。更直白地说,Linux 赢在了"看不见"的地方:你每天刷的网页、用的 App、看的视频,背后很大概率是一台跑着 Linux 的服务器。

八、为什么是 Linux 赢了,而不是 Minix 或 BSD?

回头看这段历史,一个有趣的问题是:同时代有 Minix(教学神作)、BSD(技术扎实)、甚至 GNU(理想宏大),为什么最终是林纳斯这个"业余项目"笑到了最后?答案藏在"许可 + 时机 + 性格"的组合里。Minix 的塔能鲍姆坚持微内核的教学哲学,拒绝把它变成真正的生产系统,错失了蓬勃的生态需求;BSD 则被那场版权诉讼拖住了脚步,1994 年才脱身,宝贵的时间窗口被拱手让出;GNU 技术最强、理想最纯,却卡在内核 Hurd 上迟迟交付不了。唯有 Linux 同时满足三件事:GPL 许可让所有人敢用敢改、1991 年的时间点正好踩中 Intel x86 个人电脑爆发的起点、而林纳斯"实用至上、合并一切好补丁"的开放风格,让全球黑客愿意往里贡献。

更深一层,Linux 的胜利是"集市模式"对"大教堂模式"的胜利。Eric Raymond 在那篇著名的《大教堂与集市》里总结:当足够多的眼睛参与,所有 bug 都无处藏身。Windows 和旧式 Unix 是封闭的大教堂,少数人决定一切;Linux 是开放的集市,任何公司、任何个人都能提交补丁并被认真对待。这种模式下,英特尔、IBM、红帽、谷歌虽彼此竞争,却都在为同一个内核添砖加瓦——这是商业闭源世界永远无法复制的合力。理解了这一点,你也就理解了为什么今天从火星探测器到连锁餐厅的收银机,底层都可能是 Linux。

#Linux历史 #Unix #GNU #BSD #Minix #开源 #内核 #林纳斯