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 无法覆盖这一层。
怎么判断自己需要哪一个
可以按下面的问题依次判断:
- 你只是想在现有 Unix 系统里使用 Plan 9 的工具(编辑器、shell 工具、实用程序)?→ 选 plan9port。
- 你需要 Plan 9 内核、完整系统环境或原生系统行为?→ 选 Plan 9 操作系统。
- 你想同时保留现有系统又体验 Plan 9 工具?→ plan9port 更贴合,因为它运行在类 Unix 系统之上。
- 你的任务是研究或复现 Plan 9 的系统级机制?→ 完整 Plan 9 系统,而不是移植工具集。
常见混淆点
- 把站点当成 Plan 9 官网:9fans.github.io 提供的是 Plan 9 from User Space,即面向 Unix 的工具移植,不是 Plan 9 操作系统本体。
- 以为装了工具集就有完整系统:工具集不包含内核,系统级能力仍由宿主 Unix 提供。
- 以为两者可互换:在工具使用层面有重叠,但在系统层面不可互换,选择取决于你需要工具还是需要完整系统。