2026年5月15日,Peter Salus 在家中去世,享年77岁。消息由 Dan Cross 在 TUHS(The Unix Heritage Society)邮件列表中公布。对大多数开发者来说,Salus 的名字不会出现在 man 页面或 commit log 里,但如果你认真翻过 Unix 的来路,几乎不可能绕开他写下的那些书。
一本书如何锚定一段历史
Salus 最广为人知的著作是 1994 年出版的《A Quarter Century of Unix》(Unix 四分之一世纪)。这本书不是技术手册,而是口述史——他逐个采访了从 1969 年起参与 Unix 诞生的关键人物:Ken Thompson、Dennis Ritchie、Doug McIlroy、Steve Johnson……每个人讲自己当时在做什么、为什么做那个决定、哪些想法被抛弃、哪些意外成了经典。
在没有 Stack Overflow 和 GitHub 的年代,这些决策过程几乎只存在于当事人的记忆里。Salus 把它们逐条打捞出来,按时间线编排。今天我们习以为常的管道(pipe)、文件描述符统一模型、"一切皆文件"的设计哲学,在这本书里都能找到最初几周的讨论痕迹——包括被否决的方案。
他还写了《The Daemon, the Gnu, and the Penguin》,覆盖自由软件与 Linux 的后续发展,以及多篇关于 BSD 和 TCP/IP 历史的文章。这些文字共同构成了一条从 Multics 失败到今天云基础设施的连续因果链。
TUHS:活着的 Unix 记忆库
Salus 是 TUHS 邮件列表的长期参与者。这个列表至今仍在运转,里面聚集了 Unix 早期开发者、系统考古爱好者和操作系统研究者。讨论内容从 PDP-7 上的初版 Unix 源码解读,到 V6/V7 内核的具体行为,再到各种历史细节的交叉验证。
如果你对 Unix 历史有兴趣,TUHS 是目前最值得订阅的英文邮件列表之一。归档公开可读:
https://www.tuhs.org/pipermail/tuhs/
同一站点还托管了早期 Unix 源码的完整归档,从 V1 到 V10 以及各种 BSD 分支,均可在线浏览或下载。
用代码触碰 1972 年的 Unix
说历史容易飘在空中,不如亲手翻一下当年的源码。TUHS 网站上可以直接浏览 Unix V6 的完整内核源码——那是 1975 年左右、运行在 PDP-11 上的版本,也是 Lions' Commentary 那本经典教材所注释的版本。
下面是一个实际可操作的小脚本,帮你从 TUHS 下载 Unix V6 的内核源码目录结构,并在本地生成一个按文件名排序的索引,方便逐个阅读:
#!/usr/bin/env bash
# explore_v6_unix.sh — 从 TUHS 拉取 Unix V6 内核源码并生成阅读索引
# 依赖: curl, tree (可选)
V6_URL="https://www.tuhs.org/Archive/Applications/Lions_Source/Source"
LOCAL_DIR="$HOME/unix-v6-source"
mkdir -p "$LOCAL_DIR" && cd "$LOCAL_DIR"
# 下载 V6 内核主要源文件(C 和汇编)
for file in main.c slp.c prf.c bio.c sys2.c sys3.c sys4.c iget.c inode.c \
subr.c bio.c mach.s m40.s; do
curl -sSLO "${V6_URL}/${file}" || echo "⚠ ${file} 未找到,可能文件名有差异"
done
echo ""
echo "✅ 已下载到 ${LOCAL_DIR}"
echo ""
# 生成文件索引
if command -v tree >/dev/null 2>&1; then
tree "$LOCAL_DIR"
else
ls -lh "$LOCAL_DIR"
fi
echo ""
echo "💡 建议从 main.c 开始读,那是内核入口;"
echo " slp.c 是进程调度(sleep/wakeup),Lions 注释第 20-22 章重点讲解。"
echo ""
echo " 在线浏览全部源码:"
echo " https://www.tuhs.org/Archive/Applications/Lions_Source/Source/"
运行方式:
chmod +x explore_v6_unix.sh
./explore_v6_unix.sh
拿到源码后,用任何文本编辑器打开 main.c——你会看到只有几十行代码的内核入口,没有宏、没有复杂抽象,直接操作硬件寄存器。这就是 Thompson 和 Ritchie 在 PDP-11 上写出的东西。对比今天 Linux 内核 init/main.c 的几千行,能直观感受到 50 年间操作系统复杂度的膨胀轨迹。
Salus 留给开发者的几条线索
Salus 做的不是代码考古,而是决策考古。他的书揭示了几条对今天仍有用的设计线索:
- 管道不是计划中的功能,是 Doug McIlroy 长期酝酿的想法,在 1973 年某天被 Thompson 用一个晚上实现出来。 这说明好的抽象有时比实现更难,而一旦抽象对了,实现可以极快。
- "一切皆文件"最初是为了统一 I/O 设备的访问接口,不是为了哲学美感。 实用主义驱动了 Unix 最持久的抽象。
- 早期 Unix 反复重写,V1 到 V6 每个版本都有大量推翻重来。 容许推翻是迭代的前提,而迭代的前提是小团队和低成本实验。
这些不是鸡汤,是从具体 commit 和当事人回忆中提取的因果关系。Salus 把它们记录下来,我们才有机会对照自己的工作做判断。
延伸阅读与行动清单
如果你想沿着 Salus 的线索继续深入,以下是最值得投入时间的几步:
| 优先级 | 行动 | 说明 |
|---|---|---|
| ★★★ | 读《A Quarter Century of Unix》 | 仍是 Unix 历史最完整的口述记录,二手书可找到 |
| ★★★ | 订阅 TUHS 邁件列表 | tuhs@tuhs.org,归档在 tuhs.org |
| ★★☆ | 读 Lions' Commentary + V6 源码 | 操作系统设计的经典教材,源码可用上面的脚本获取 |
| ★★☆ | 读《The Daemon, the Gnu, and the Penguin》 | Salus 对自由软件运动的续写,覆盖 BSD 与 Linux |
| ★☆☆ | 翻 PDP-7 初版 Unix 源码 | TUHS 上有 1970 年前的原始版本,极简,适合感受起点 |
Salus 去世了,但他打捞的那些决策过程和人物记忆已经固定在书页和邮件列表里。对开发者来说,读这些不是为了怀旧,而是为了在下一个需要做架构决策的夜晚,知道前人踩过哪些坑、为什么选了那条路。