Plan 9复活:三十年前的系统凭什么搅局浏览器计算

Plan 9复活:三十年前的系统凭什么搅局浏览器计算

九月 22, 2026 webassembly wasm plan9 unix browser-computing local-first sandboxing web-development devtools

在浏览器里跑 Linux ?这个开源项目有点意思

以前想跑个 Linux 虚拟机,得去云服务商那里租个实例,每个月少说也得花个几十块。现在倒好,有人直接把这套东西搬进了浏览器标签页里,连服务器都不用碰。

这个项目叫 Wanix。玩了一阵子之后,我真心觉得这是个值得盯着的项目。

Wanix 是什么

说白了,Wanix 就是一个跑在浏览器里的类 Unix 环境,用 WebAssembly 实现的。它借鉴了 Plan 9 的设计思路——对,就是那个贝尔实验室在 90 年代中期搞出来的操作系统。

它给你提供了:

  • 每个进程独立的 namespace
  • 真正的 shell(用的是 rc,就是 Plan 9 那个)
  • "一切皆文件" 的哲学
  • 完全沙盒化,数据不离开你的电脑

整个系统是由一堆自定义 Web Components 组成的。想加个终端?直接写 <wanix-term>。需要跑个任务?<wanix-task>。想整点刺激的?<wanix-vm> 可以启动一个完整的 Linux 虚拟机,用的是 v86 这个项目。

各个组件之间通过 namespace 系统互相通信,懂 Plan 9 的人会觉得特别眼熟。

为什么偏偏是 Plan 9 ?

这问题有意思。Plan 9 当年没火起来,但它的一些设计理念确实超前:

进程级 namespace:每个进程都可以有自己的文件系统视图,互不干扰。

联合目录:把多个文件系统叠加在一起,呈现出一个统一的视图。

一切皆文件:设备、进程、网络连接,全都通过文件系统来访问。

95 年那会儿这些概念很激进,但现在来看,简直就是为现代 Web 开发量身定做的。你想啊,现在的需求不就是让复杂逻辑跑在客户端,同时还要严格的隔离控制吗?Plan 9 的 namespace 模型刚好满足这个需求。

实际能用来干嘛

光说概念没意思,来点实际的。

沙盒开发环境:在浏览器里起一个完整的开发环境,用内置的工作台编辑文件,在真正的 shell 里跑命令,但完全不影响你本机。适合远程协作、临时办公环境,或者给外包人员开个隔离的代码空间。

本地跑浏览器兼容性测试:起不同的 Linux 环境,测试你的软件在各种配置下的表现,全程在本地跑。不用排队等 CI,也不用花钱买浏览器测试服务。

本地优先的文件操作:Wanix 的工作台本质上是个完整的 IDE,但它不只是能编辑本地文件。你还能挂载远程 namespace,把本地的和远程的目录叠加在一起。这样一来,你其实是在"远程登录"到别人的环境里,通过文件系统实现实时协作。

教学沙盒:教 Unix 基础、系统管理、甚至容器原理,都可以用这个。学生再怎么折腾,也就在浏览器标签页里蹦跶,不会碰到任何真实的生产系统。

技术上怎么实现的

好奇的朋友可以看看 Wanix 的技术栈:

  • WebAssembly:让代码能以接近原生的速度在浏览器里跑
  • 自定义 Web Components:那些 <wanix-*> 标签,把底层复杂度都封装好了
  • Namespace 绑定:可以把文件、压缩包、甚至其他 namespace 挂载进来
  • 9P over WebSocket:远程 namespace 访问用的协议——没错,就是 Plan 9 95 年用的那个

用法也简单,三个标签就能得到一个可用的 shell,五个标签就能搭出一个带终端的完整 IDE。组件之间可以自由组合,遵循的就是 Unix "各司其职" 的原则。

这对 Web 开发意味着什么

我们在见证一个趋势的转变。过去几年大家都在喊"什么都上云",但越来越多人意识到客户端计算的好处:延迟低、省服务器钱、支持离线、数据隐私有保障——你的数据压根不用传出去。

Wanix 属于这个"本地优先"阵营。它不是要替代云主机,这个咱得清醒——但它在传统架构够不着的地方,找到了自己的位置。如果你做的是开发者工具、协作应用、或者教育平台,这个思路值得研究。

Plan 9 那帮人 95 年就在解决分布式计算的问题,我们现在还在琢磨。说不定未来的样子,还真就长得像过去一样。


想玩一玩的话,CDN 直接引入就能在任意页面里加上 Wanix。不过提醒你一句:一旦你在浏览器里跑起第一个 Linux 虚拟机,可能会陷进去出不来。

Read in other languages:

EL CS RU BG TR UZ FI SV NB RO PT PL NL FR HU IT DE ES DA EN