9front 操作系统技术分析

一、概述

1. 项目背景

A. Plan 9 的起源

Plan 9 是一个诞生于贝尔实验室计算科学研究中心的研究型操作系统,由同一批创造 UNIX 的研究人员开发。该项目始于 20 世纪 80 年代末,其早期发展与 Research UNIX 后续版本的开发并行进行。

B. 设计理念

Plan 9 可以被视为将 UNIX 的某些核心理念推向极致的尝试,旨在适应网络化和图形化时代。Rob Pike 曾将 Plan 9 描述为"关于简洁性和清晰性的论证",而其他人则称其为"UNIX,只是更加彻底"。

2. 核心架构

graph TB
    subgraph "Plan 9 分布式环境"
        Terminal[终端] -->|连接| CPU[CPU 服务器]
        Terminal -->|访问| FileServer[文件服务器]
        CPU -->|存储| FileServer
    end

    subgraph "用户界面"
        WindowSystem[窗口系统] --> Display[光栅显示器]
    end

    Terminal --> WindowSystem

mermaid

3. 两大核心设计理念

A. 私有命名空间

每个进程都可以构建唯一的层次化文件系统视图。这是 Plan 9 与传统 Unix 系统的根本区别之一。在标准系统中,无论是 Unix 远程文件系统还是 Windows 附加文件系统,同一机器上运行的所有程序看到的是相同的内容。而在 Plan 9 中,这是可针对每个程序进行调整的。

B. 文件接口

所有资源在 Plan 9 中都表现为文件系统。这意味着所有设备都通过 ASCII 字符串控制,而非复杂的数据结构。例如,网络调用通过写入 ASCII 字符串完成,而非二进制文件。

二、系统架构

1. 分布式计算模型

根据 intro(1) 手册页的定义:

Plan 9 是一个分布式计算环境,由作为终端、CPU 服务器和文件服务器的独立机器组装而成。用户在终端上工作,在光栅显示器上运行窗口系统。某些窗口连接到 CPU 服务器,目的是在这些窗口中进行繁重的计算,但也可以在终端上进行计算。独立的文件服务器为终端和 CPU 服务器提供文件存储。

2. 资源抽象

graph LR
    App[应用程序] -->|访问| Namespace[私有命名空间]
    Namespace -->|挂载| FileSys[文件系统接口]
    FileSys -->|统一协议| Resources[各类资源]

    Resources --> Dev[设备文件]
    Resources --> Net[网络接口]
    Resources --> Proc[进程接口]
    Resources --> Mail[邮件系统]

mermaid

3. 典型应用场景

A. 文件服务器示例

  • upas/fs:将邮箱表示为 /mail/fs/mbox 处的文件树,特别适合建模 MIME 消息的递归结构
  • cdfs:将音频或数据 CD 表示为文件系统,每音轨一个文件
  • ftpfs:FTP 作为文件服务器提供,服务器上的文件出现在 /n/ftp 中

B. 网络资源共享

Plan 9 非常适合网络化环境,文件和目录树可以从其他机器导入,所有资源都是文件或目录树,因此易于共享资源。例如:

  • 使用不同机器的声卡:导入其 /dev/audio
  • 调试另一台机器上运行的进程:导入其 /proc
  • 使用另一台机器的网络接口:导入其 /net

三、Plan 9 与 Unix 的关系

1. 不是 Unix

根据贝尔实验室 Plan 9 wiki 的说明:

Plan 9 不是 Unix。如果你把它当作 Unix,当某些功能不存在或工作方式与预期不同时,你可能会感到沮丧。然而,如果你把它当作 Plan 9,你会发现它的大部分功能运行得非常顺畅,并且有一些真正巧妙的想法使事物比以前见过的更加简洁。

2. 继承与创新

A. 直接继承的组件

许多 Unix 命令在 Plan 9 上存在并且行为相似。事实上,Plan 9 的部分用户空间是直接从 Research UNIX 第十版继承过来的,包括:

  • upas 邮件接口
  • sam 文本编辑器
  • rc shell

B. 根本性重新设计

Plan 9 是一个全新的操作系统,不试图符合过去的偏见。其目的是避免过去的问题并探索新领域。Plan 9 不是 UNIX 是有原因的。

3. 与其他项目的区别

A. 不是 plan9port

Plan 9 from User Space(也称为 plan9port 或 p9p)是 Plan 9 库和应用程序到 Unix 类操作系统的移植。plan9port 由基本未修改的 Plan 9 用户空间工具打包而成,同时使用各种 Unix 程序和命令尝试模仿 Plan 9 的内核接口。这些模仿有些更成功,有些不那么成功。

B. 不是 Inferno

Inferno 也是贝尔实验室创建的分布式操作系统,它采用了 Plan 9 的许多想法(包括兼容的 9P/Styx 协议),但是一个完全不同的操作系统。

四、Plan 9 家族

1. 主要分支

graph TB
    Plan9[Plan 9 from Bell Labs] --> 9legacy[9legacy]
    Plan9 --> 9atom[9atom]
    Plan9 --> 9front[9front]
    Plan9 --> Plan9Port[Plan 9 from User Space]
    Plan9 --> Inferno[Inferno]

    9front --> NIX[NIX]
    9front --> r9[r9]
    Inferno --> Akaros[Akaros]

    Plan9 -.继承| Harvey[Harvey]
    Plan9 -.继承| Jehanne[Jehanne]
    Plan9 -.继承| ANTS[ANTS]

mermaid

2. 各分支简介

A. 原始 Plan 9

  • Plan 9 from Bell Labs:原始版本,实际上已死,所有开发者都已离开实验室
  • 9legacy:David du Colombier 收集的贝尔实验室 Plan 9 补丁集(不是分支,但被愤怒于 9front 的人们视为贝尔实验室 Plan 9 的延续)
  • 9atom:Erik Quanstrom 的 Plan 9 分支,前根据 Erik 的需求维护,偶尔被 9front 借用

B. 活跃分支

  • 9front:当前最活跃的分支,自称"我们是隧道蛇"
  • NIX:高性能云计算操作系统,曾崩溃但幸存并适应了 9front
  • Harvey:使 Plan 9 代码与 gcc 和 clang 兼容的努力,2023 年失败,由 r9 继任
  • r9:基于 Plan 9 需要用无法在 Plan 9 上编译的语言从头重写的想法的项目

C. 相关项目

  • Inferno:贝尔实验室开始的分布式操作系统,现在由 Vita Nuova Holdings 开发和维护为自由软件
  • Akaros:针对多核架构的开源 GPL 许可操作系统
  • Jehanne:Harvey 的继任者
  • ANTS:为 Plan 9 添加新命名空间操作能力的修改和附加软件集合

五、许可证演变

1. 许可证历史时间线

timeline
    title Plan 9 许可证演变
    1992 : 第一版 : 仅限大学使用<br>获取流程复杂
    1995 : 第二版 : 书+CD 形式<br>约 350 美元
    2000 : 第三版 : 自定义开源许可证<br>Richard Stallman 批评
    2002 : 第四版 : Lucent Public License<br>Theo de Raadt 批评
    2014 : 部分代码 : GPLv2 授权<br>与 Akaros 一起分发
    2021 : 全部历史版本 : MIT 许可证<br>Plan 9 Foundation 推动

mermaid

2. 关键事件

A. Richard Stallman 的批评(2000年)

当 Plan 9 第三版作为"开源"发布时,Richard Stallman 研究许可证后的结论是它不是自由软件,包含几个对自由软件运动完全不可接受的限制。

B. Theo de Raadt 的批评(2003年)

针对 Lucent Public License,OpenBSD 创始人 Theo de Raadt 表示:

  • 这个许可证对 BSD 项目来说完全不可接受
  • 这不是一个使其自由的许可证,而是一个带有后果的合同

C. 2021 年 MIT 许可证

Plan 9 Foundation 说服 Nokia 将所有历史版本的 Plan 9 源代码重新授权为 MIT Public License。作为结果,9front 的全部内容现在都在 MIT 许可证下提供,除非另有说明。

D. 商标问题

Brantley Coile 注意到 Plan 9 商标已于 2020 年 11 月 25 日过期并购买了它。这发生在 Plan 9 版权转让给 Plan 9 Foundation(2021 年 3 月 23 日)之前。

六、为什么 Plan 9 没有取代 Unix

1. 创作者放弃的原因

A. Russ Cox 的观点

我在 2002 年左右之前一直将贝尔实验室的 Plan 9 作为日常工作环境。到那时,两个事实已经非常清楚。首先,互联网已经留下来;其次,Plan 9 没有希望跟上网络浏览器。将 Mozilla 移植到 Plan 9 的工作量太大,所以我将几乎所有的 Plan 9 用户级软件移植到了 FreeBSD、Linux 和 OS X。

操作系统和编程语言有很强的网络效应:使用与你周围其他人相同的系统会有所帮助。在我所在的 MIT 小组中,这意味着 FreeBSD 和 C++。我在 MIT 的头几年使用 Plan 9,但放弃了,因为缺乏共享系统使协作太困难。

B. Rob Pike 的观点

我加入 Google 后大约一年将 Plan 9 作为本地操作系统使用,但在没有 C++ 编译器、没有良好的 NFS 和 SSH 支持,特别是没有网络浏览器的机器上生活太不方便了。我切换到 Linux,但发现它有很多错误,我的主要合作者已经做了在 Google 内部将 Mac 作为主要机器的基础工作,Russ 已经有了 plan9port,所以我将 plan9port 推到了 Mac 上,从此一直在那里,非常快乐。

2. 根本原因分析

A. 网络浏览器的兴起

21 世纪初,互联网和 Web 浏览器成为计算的核心。Plan 9 在这方面无法跟上。

B. 软件生态系统的缺失

缺乏现代应用软件,包括:

  • 现代浏览器(如 Mozilla)
  • 开发工具(如 C++ 编译器)
  • 网络工具(如良好的 NFS 和 SSH 支持)

C. 网络效应

操作系统具有很强的网络效应,使用与周围其他人相同的系统更容易协作。

3. Plan 9 的遗产

尽管 Plan 9 本身没有取代 Unix,但它的许多思想和工具通过其他方式延续:

A. plan9port 的成功

plan9port.tgz 文件在 2009 年从 2522 个唯一 IP 地址下载,这比 Plan 9 本身要多得多。从这个意义上说,很高兴看到这些工具比以前获得了更广泛的曝光。

B. 工具的移植

许多 Plan 9 的用户空间工具被移植到其他系统:

  • sam:强大的文本编辑器
  • acme:用户界面
  • rc shell:命令解释器

七、Plan 9 不是为谁设计的

1. 目标用户定位

让我们完全诚实地说。许多今天被"计算机专家"认为是计算必不可少的功能(JavaScript、CSS、HTML5 等)在 Plan 9 被其创建者放弃时要么不存在,要么被故意排除在操作系统之外。如果你无法想象不涉及 Web 浏览器的计算机用途,Plan 9 可能不适合你。

2. 新用户的典型反应

John Floren 提供了一个典型新用户对 Plan 9 的反应:

  • 我对使用这个新的 Linux 系统感到很兴奋
  • 我如何运行 X11
  • Emacs 在哪里
  • 代码很奇怪,看起来完全不像 GNU C。编写 Plan 9 的人知道 C 吗
  • 我尝试运行 mozilla 但不起作用。为什么

八、为什么选择 Plan 9

1. 一致性和易用性

Russ Cox 的观点:

Plan 9 提供了一致且易于使用的接口。一旦安顿下来,这里很少有意外。我从 Windows 3.1 切换到 Linux 后,注意到 Windows 3.1 中各种不一致的行为在 Linux 中没有。从 Linux 切换到 Plan 9 突出了 Linux 中同样多的问题。

2. 系统级设计的优势

Plan 9 小组有幸拥有整个系统,因此问题可以在应该修复的地方修复,功能可以在应该添加的地方添加,而不是在可以添加的地方添加。例如,内核中没有 tty 驱动程序。窗口系统处理终端输入的细微差别。

3. 用户级文件服务器

由于文件树的部分可以由用户级服务器提供,内核不需要了解 DOS 的 FAT 文件系统或 GNU/Linux 的 EXT2 文件系统或 NFS 等内容。相反,用户级服务器在需要时提供此功能。在 Plan 9 中,甚至 FTP 也作为文件服务器提供:运行 ftpfs,服务器上的文件出现在 /n/ftp 中。

九、学习资源

1. 官方文档

2. 推荐书籍

  • 《Introduction to OS Abstractions Using Plan 9 From Bell Labs》,作者 Francisco J Ballesteros(nemo)
  • 《Notes on the Plan 9 3rd Edition Kernel》,作者 Francisco J Ballesteros
  • 《The UNIX Programming Environment》,作者 Brian W. Kernighan 和 Rob Pike
  • 《9FRONT DASH 1》(即本文档的书籍形式)

3. 在线资源

  • cat-v.org:关于 UNIX、Plan 9 和软件的一般方面的宝贵信息

参考资料

  1. 9front FQA 0 - Introduction To Plan 9
最后修改:2026 年 01 月 19 日
如果觉得我的文章对你有用,请随意赞赏