操作系统那些事儿⑥:Unix 世界的另一条主线——System V、Solaris 与商业 Unix
如果把操作系统的发展史比作《三国演义》,那么本文更像《三国演义》,而不是《三国志》。
本系列尝试用故事化的方式,讲述 Unix、Linux、BSD、GNU、Windows、macOS、Android 等操作系统背后的发展历程。
文中的人物、事件和技术演进都尽量参考公开资料,但为了让故事更容易理解,会适当简化一些历史细节,也会加入作者自己的理解。
它不是一篇学术论文,而是一段程序员视角的技术故事。
引子:我们前面其实漏掉了 Unix 世界的一半
前面讲 BSD 时,我们说:
Unix 从贝尔实验室走进伯克利大学。
伯克利的研究人员不断修改 Unix。
最后发展出了:
BSD。
随后又有:
- FreeBSD;
- NetBSD;
- OpenBSD。
于是很容易给人一种感觉:
Unix 后来的故事,就是 BSD → Linux / macOS。
其实不是。
在 Unix 历史上,还有另外一条极其重要的主线。
它没有诞生在大学。
而是一直留在 Unix 的“老家”:
AT&T。
这条线后来发展成:
UNIX System V。
如果说 BSD 代表的是:
大学、研究机构和开放技术社区。
那么 System V 更像代表:
商业 Unix、企业服务器和传统大厂。
在 20 世纪八九十年代,这两条路线长期并存。
甚至一度打得不可开交。
而 Solaris、AIX、HP-UX 这些曾经称霸企业机房的操作系统,都和这段历史密切相关。
第一章:Unix 离开贝尔实验室后,出现了两个世界
Unix 最早诞生于 Bell Labs。
但因为当时 AT&T 受到监管限制,Unix 一开始并没有被当作普通商业软件大规模销售。
于是 Unix 源代码进入了很多大学和研究机构。
其中最重要的一站就是:
UC Berkeley。
于是出现了 BSD。
但是 AT&T 自己也没有停止开发 Unix。
这就形成了两个方向。
一边:
Berkeley BSD。
另一边:
AT&T Unix。
随着时间发展,两边开始越来越不一样。
BSD 增加了:
- TCP/IP;
- BSD Sockets;
- Fast File System;
- 虚拟内存;
- 大量开发工具。
AT&T 也不断发展自己的 Unix。
先有:
System III。
然后到了 1983 年:
UNIX System V。
Unix 世界,从此出现了一条非常重要的商业主线。
第二章:System V 是什么?
今天 Linux 用户可能经常看到一个词:
SysV
例如:
SysV init
这个 SysV,其实就是:
System V。
System V 里的 V 不是字母 V。
而是罗马数字:
Five。
也就是:
Unix System Five。
它是 AT&T 推出的商业 Unix 版本。
后来又不断升级:
System V ↓SVR2 ↓SVR3 ↓SVR4
这里的 R,就是:
Release。
其中最重要的一个版本:
System V Release 4,简称 SVR4。
为什么 SVR4 很重要?
因为到了 80 年代后期,Unix 世界已经乱成了一锅粥。
第三章:Unix 成功以后,反而开始“天下大乱”
Unix 最大的成功之一,就是:
很多公司都开始做自己的 Unix。
但这同时也制造了一个问题。
大家都是 Unix。
却越来越不一样。
Sun 有:
SunOS。
IBM 有:
AIX。
HP 有:
HP-UX。
DEC 有:
Ultrix。
SGI 有:
IRIX。
还有:
- SCO UNIX;
- Xenix;
- UnixWare。
表面看:
大家都是 Unix。
实际上:
命令不同。
系统管理方式不同。
库不同。
文件位置不同。
API 也可能不同。
这就出现了一个非常尴尬的局面:
Unix 本来强调软件可移植性,结果 Unix 自己却越来越不兼容。
于是 80 年代出现了一场著名的:
Unix Wars。
第四章:BSD 和 System V,开始互相抢地盘
如果简单理解当年的 Unix 世界,可以把它看成两个阵营。
一边是:
BSD 派。
另一边:
System V 派。
BSD 在大学、工作站、网络技术领域影响巨大。
System V 则背靠 AT&T,积极向商业市场发展。
两边甚至连很多日常工具的行为都不一样。
程序员可能会遇到:
这个命令在 BSD 上这样用,在 System V 上却是另外一种参数。
一些标准库和系统调用也存在差异。
今天我们习惯:
Unix-like 系统大体差不多。
但在那个年代:
“你运行的是哪一种 Unix?”
是一件非常重要的事情。
于是大家开始意识到:
再这么发展下去,Unix 迟早会把自己玩死。
第五章:一个非常重要的版本——SVR4
到了 80 年代末,AT&T 和 Sun Microsystems 开始合作。
他们希望:
把 Unix 世界里几条重要技术路线重新整合起来。
于是诞生了:
System V Release 4。
也就是:
SVR4。
SVR4 很有意思。
它并不是简单继续 System V。
而是吸收了多个 Unix 分支的技术。
大致可以理解成:
System V +BSD +SunOS +Xenix 等技术 ↓SVR4
也就是说:
当年的两大 Unix 阵营虽然一直竞争,
但最后大家发现:
对方的好东西,还是得拿过来。
System V 吸收了 BSD 的不少技术。
BSD 世界也不断兼容商业 Unix 标准。
Unix 开始从“阵营战争”慢慢走向:
标准化。
第六章:Sun,本来其实站在 BSD 这一边
这里出现了一个很有意思的人。
前面 BSD 那篇我们提到过:
Bill Joy。
他是 Berkeley BSD 早期最重要的开发者之一。
也是:
vi 的作者。
后来 Bill Joy 离开伯克利。
1982 年,他参与创办了一家公司:
Sun Microsystems。
于是 Sun 早期的操作系统自然深受 BSD 影响。
它叫:
SunOS。
早期 SunOS 基本属于 BSD Unix 这一派。
这非常合理。
毕竟创始团队里面就有 BSD 核心开发者。
于是早期关系大概是:
Unix ↓BSD ↓SunOS
但是后来事情发生了变化。
第七章:Sun 突然转向了 System V
到了 80 年代末,Sun 做出了一个非常重要的选择:
和 AT&T 合作。
双方共同推动 SVR4。
Sun 后来的新一代操作系统开始建立在 SVR4 路线上。
这个系统后来有了一个大家更加熟悉的名字:
Solaris。
于是 Sun 自己完成了一次非常有意思的转身:
早期: BSD ↓SunOS 后来: System V + BSD + Sun 技术 ↓ SVR4 ↓ Solaris
严格来说,Solaris 这个品牌还包含桌面环境、网络组件等完整软件栈。
但从 Unix 血统来说:
Solaris 2 以后最核心的路线就是 SVR4。
这也是为什么 Solaris 通常被认为是:
System V 阵营最重要的继承者之一。
第八章:Solaris 曾经有多牛?
今天很多年轻程序员听 Solaris,可能感觉:
一个已经淡出视野的老 Unix。
但在当年,Solaris 可不是小众玩具。
它曾经是企业 Unix 世界里的重量级选手。
Sun 的服务器大量运行 Solaris。
尤其在:
- 金融;
- 电信;
- 数据库;
- 大型企业;
- 科研;
- 数据中心。
这些领域里,Solaris 曾经非常常见。
而且 Solaris 有不少非常有影响力的技术。
比如:
ZFS。
今天你可能在 NAS、FreeBSD、Linux 上见过它。
ZFS 把很多传统上分开的东西:
- 文件系统;
- Volume Manager;
- 数据校验;
- Snapshot;
- RAID;
- 存储池;
整合进了一套体系里。
另一个著名技术:
DTrace。
它可以动态观察系统内部:
系统调用函数Kernel进程I/O网络
对于排查复杂性能问题非常强大。
还有:
Solaris Zones。
它是一种操作系统级虚拟化 / 隔离技术。
可以在同一个 Solaris Kernel 上运行多个隔离环境。
今天看起来是不是有点熟悉?
很容易让人想到:
Container。
当然:
Zones 不是 Docker。
Docker 也不是从 Solaris Zones 直接发展出来的。
但从思想上看:
一个 Kernel 上隔离多个用户空间。
这类技术早就已经在商业 Unix 世界里被认真使用了。
第九章:商业 Unix 的黄金时代
Solaris 并不是唯一的商业 Unix。
当时还有几位重量级玩家。
IBM AIX
IBM 的 Unix:
AIX。
主要运行在 IBM 自己的服务器和 Power 架构上。
AIX 最大的特点并不是:
普通开发者喜欢折腾它。
而是:
大企业喜欢它。
银行。
保险。
电信。
大型 ERP。
Oracle 数据库。
很多关键业务系统里都能看到 AIX。
HP-UX
HP 也有自己的 Unix:
HP-UX。
主要配合 HP 自家的服务器硬件。
在企业数据中心同样非常常见。
SGI IRIX
Silicon Graphics 有:
IRIX。
它在:
- 图形工作站;
- 3D;
- 动画;
- 科学计算;
领域非常著名。
当年很多电影特效,都和 SGI 工作站关系密切。
于是 90 年代的数据中心可能是这样的:
Sun 服务器 → SolarisIBM 服务器 → AIXHP 服务器 → HP-UXSGI 工作站 → IRIXPC / 小型服务器 → SCO UNIX
Unix 并不是一个操作系统。
它更像一个:
商业操作系统帝国。
第十章:但是 Unix 最大的问题也暴露出来了
商业 Unix 有一个非常现实的问题:
太贵。
操作系统往往绑定硬件。
Sun Solaris 最舒服的是跑 Sun 服务器。
AIX 跑 IBM。
HP-UX 跑 HP。
于是客户买的并不只是:
一个操作系统。
而是一整套:
专有服务器+专有 Unix+厂商服务+商业数据库+企业应用
这种模式可靠。
但是价格也非常高。
而就在商业 Unix 巨头们互相竞争的时候,
角落里,一个不起眼的系统正在成长。
它运行在便宜的 x86 PC 上。
名字叫:
Linux。
第十一章:Linux 开始做商业 Unix 做的事情
Linux 一开始根本不像 Solaris 的竞争对手。
一边是:
几十万美元的企业服务器。
另一边可能只是:
Linus 在自己的 386 PC 上写出来的小 Kernel。
但是硬件发展速度实在太快了。
普通 x86 服务器越来越强。
Linux 也越来越成熟。
再加上:
- GNU;
- GCC;
- Apache;
- MySQL;
- PostgreSQL;
- Red Hat;
- Debian;
- IBM;
- Oracle。
Linux 逐渐拥有了一整套企业生态。
以前企业需要:
昂贵 Unix 工作站+商业 Unix
后来发现:
普通 x86 服务器+Linux
也能完成大量任务。
而且:
更便宜。
更开放。
硬件选择更多。
社区更大。
于是服务器市场开始发生一次巨大迁移:
Unix → Linux。
第十二章:Sun 做了一件非常大胆的事情——OpenSolaris
面对 Linux 快速成长,Sun 也意识到:
封闭的商业 Unix 模式越来越难维持。
于是 Sun 做出了一个在当时非常大胆的决定:
开放 Solaris 的大量源代码。
2005 年:
OpenSolaris出现。
这件事情当时非常轰动。
因为 Solaris 是 Sun 最核心的技术资产之一。
里面包括大量优秀技术:
- ZFS;
- DTrace;
- Zones;
- 网络栈;
- Kernel 技术。
Sun 希望:
Solaris 也能像 Linux 一样建立开放社区。
于是看起来:
Unix 世界似乎又迎来了一次新的机会。
但是几年以后:
剧情突然发生了变化。
第十三章:Oracle 收购 Sun
2010 年。
Oracle 完成对 Sun Microsystems 的收购。
Sun 这家公司,从此消失。
Solaris 也进入 Oracle 时代。
随后:
OpenSolaris 项目停止。
Oracle 继续发展商业 Solaris。
但是开放社区原本期待的那条路线,基本走到了尽头。
这时候,一群开发者做出了一个非常 BSD / Unix 风格的决定:
那我们 Fork。
于是出现了:
illumos。
第十四章:illumos 是什么?
很多人第一次看到 illumos,会以为:
又一个 Linux 发行版?
其实不是。
illumos 更像是:
OpenSolaris 开源代码的社区继承者。
它保留并继续发展:
- Kernel;
- ZFS;
- DTrace;
- Zones;
- 网络;
- 系统工具。
所以大致可以把这段关系理解成:
AT&T Unix ↓System V ↓SVR4 ↓Solaris ↓OpenSolaris ↓illumos
但是 illumos 本身又有点像 Linux Kernel:
它更像一个核心系统项目。
真正拿来安装使用时,还会出现不同发行版。
其中就包括:
OpenIndiana。
第十五章:OpenIndiana——今天还能体验的 Solaris 后裔
OpenIndiana 是基于 illumos 的一个操作系统发行版。
它继承了 OpenSolaris 的很多设计。
如果今天你想亲自看看:
Solaris / System V 这一条 Unix 路线到底是什么感觉。
OpenIndiana 是一个非常有意思的选择。
你可以看到:
- ZFS;
- DTrace;
- Zones;
- SMF;
- Solaris 风格系统管理;
- illumos Kernel。
它有点类似:
Linux Kernel ↓Ubuntu / Debian
而:
illumos ↓OpenIndiana
当然,这只是帮助理解的类比。
两边项目结构并不完全一样。
但对于第一次认识 illumos 的人来说,这个比喻很好理解。
第十六章:为什么今天已经很少听到商业 Unix?
因为 Linux 基本接过了它的位置。
过去企业需要 Unix,是因为它:
- 稳定;
- 多用户;
- 网络能力强;
- 可以跑数据库;
- 可以长期运行;
- 有成熟的企业支持。
但今天这些事情:
Linux 基本都能做到。
而且 Linux 还拥有一个巨大优势:
几乎不绑定硬件。
x86 可以跑。
ARM 可以跑。
Power 可以跑。
大型机也可以跑。
云服务器可以跑。
超级计算机也可以跑。
于是 Linux 最终做了一件很有意思的事情:
它没有打败 Unix 的思想。
恰恰相反。
它继承了 Unix 的思想,
然后打败了传统商业 Unix 的商业模式。
第十七章:BSD 和 System V,谁赢了?
如果站在 1985 年,你可能会问:
BSD 和 System V,最终谁会统一 Unix?
但今天回头看,这个问题其实很有意思。
因为最终:
两边都没有真正赢。
System V 没有统一世界。
BSD 也没有统一世界。
真正成为服务器主流的是:
Linux。
但是,如果看技术影响:
BSD 活下来了。
FreeBSD、NetBSD、OpenBSD 还在继续发展。
macOS 继承了大量 BSD 技术。
OpenSSH 来自 OpenBSD。
BSD Sockets 几乎影响整个现代网络编程世界。
System V 也没有真正消失。
Solaris 留下了:
- ZFS;
- DTrace;
- Zones;
- SMF。
商业 Unix 时代培养出来的很多系统设计思想,也进入了后来的操作系统世界。
甚至今天 Linux 里仍然能够看到很多 System V 时代留下的名字:
SysV initSystem V IPCshared memorymessage queuesemaphore
所以:
BSD 和 System V 的战争最终没有真正的赢家。
真正留下来的,是双方的技术。
写在最后:Unix 没有统一世界,却塑造了整个世界
如果我们把 Unix 历史画成一棵树。
最早是:
Unix | ┌───────┴───────┐ | | BSD System V | | FreeBSD 等 SVR4 | | Darwin Solaris | | macOS OpenSolaris | illumos | OpenIndiana
当然,真实历史远比这张图复杂。
两条线路之间也不是完全隔离。
BSD 会吸收 System V 的东西。
System V 也吸收 BSD 技术。
后来又有 POSIX、Single UNIX Specification 等标准不断把它们拉回到一起。
但是从理解 Unix 历史的角度:
这两条主线非常重要。
BSD 代表了:
大学、开放、网络和工程文化。
System V 则代表了:
商业 Unix、企业服务器和工业化。
几十年以后:
商业 Unix 的黄金时代已经过去。
Sun 已经消失。
IRIX 已经成为历史。
HP-UX 和 AIX 也远没有当年的声势。
Solaris 逐渐淡出了大多数开发者的视野。
Linux 成为了服务器和云计算时代真正的主角。
但 Unix 世界并没有因此消失。
它只是换了一种方式继续存在。
今天:
我们在 Linux 中使用 Unix 命令。
在 macOS 中使用 BSD 工具。
在 NAS 中使用 ZFS。
在服务器里使用 SSH。
在容器中实践进程隔离。
很多看似现代的技术背后,
其实都有几十年前 Unix 工程师留下的影子。
所以,Unix 历史真正有趣的地方并不是:
谁最终赢了?
而是:
那些看似已经退出历史舞台的系统,为什么直到今天仍然影响着我们。
System V 和 Solaris,就是这样一条已经不再站在舞台中央,却绝不能从 Unix 历史中删掉的主线。