Plan 9 from User Space 与 Plan 9 操作系统有什么区别?

更新时间

Plan 9 from User Space(常简称 plan9port,站点为 9fans.github.io)是把 Plan 9 的用户空间工具移植到类 Unix 系统上的一套软件,它不包含 Plan 9 内核,因此不能替代 Plan 9 操作系统。如果你的目标是日常在 Linux/macOS 上使用 Plan 9 风格的编辑器、shell 和工具,选 plan9port;如果你需要 Plan 9 本身的完整系统行为(内核、设备模型、原生环境),则要使用 Plan 9 操作系统,而不是这套移植。

两者的定位差异

维度 Plan 9 操作系统 Plan 9 from User Space(plan9port)
本质 完整操作系统 用户空间工具的移植集合
是否含内核 是 否
运行环境 自身 类 Unix 系统之上
提供内容 内核、系统服务、用户空间工具 编辑器、shell 工具、实用程序等
适用目标 使用或研究 Plan 9 完整系统 在现有 Unix 系统里获得 Plan 9 工具

站点资料对它的描述是“Port of Plan 9 userspace tools for Unix-like systems, including editors, shell tools, and utilities”,页面标题为“Plan 9 from User Space”。这句话已经划清了边界:移植的是用户空间工具,宿主是类 Unix 系统。

关键机制:为什么它不等于 Plan 9

Plan 9 的很多行为来自内核层面的设计,例如统一的文件式接口和设备模型。plan9port 只把用户态程序搬到 Unix 上运行,这些程序在宿主系统上工作,依赖的是宿主的内核与系统调用,而不是 Plan 9 内核。因此:

  • 你能得到 Plan 9 风格的工具和操作方式;
  • 你得不到 Plan 9 内核提供的系统级语义;
  • 移植范围明确不包含 Plan 9 内核。

例如需要在一个 Linux 开发机上用 Plan 9 的编辑器处理代码,plan9port 是合适的选择;例如需要验证某个程序在 Plan 9 原生环境下的系统行为,就必须在 Plan 9 系统里做,plan9port 无法覆盖这一层。

怎么判断自己需要哪一个

可以按下面的问题依次判断:

  1. 你只是想在现有 Unix 系统里使用 Plan 9 的工具(编辑器、shell 工具、实用程序)?→ 选 plan9port。
  2. 你需要 Plan 9 内核、完整系统环境或原生系统行为?→ 选 Plan 9 操作系统。
  3. 你想同时保留现有系统又体验 Plan 9 工具?→ plan9port 更贴合,因为它运行在类 Unix 系统之上。
  4. 你的任务是研究或复现 Plan 9 的系统级机制?→ 完整 Plan 9 系统,而不是移植工具集。

常见混淆点

  • 把站点当成 Plan 9 官网:9fans.github.io 提供的是 Plan 9 from User Space,即面向 Unix 的工具移植,不是 Plan 9 操作系统本体。
  • 以为装了工具集就有完整系统:工具集不包含内核,系统级能力仍由宿主 Unix 提供。
  • 以为两者可互换:在工具使用层面有重叠,但在系统层面不可互换,选择取决于你需要工具还是需要完整系统。