在网页浏览器中运行完整操作系统的想法听起来像科幻小说,但 WebVM(GitHub 上的 leaningtech/webvm)将其变为现实。由 Leaning Technologies 开发,WebVM 是一个完全在浏览器中使用 WebAssembly 执行的完整 Linux 虚拟机,不需要任何服务器端基础设施、安装或云账户。
WebVM 的核心是 CheerpX,这是一个由同一团队开发的 x86 到 WebAssembly 虚拟机引擎。CheerpX 在运行时动态地将 x86 机器码翻译为 WebAssembly,使未经修改的 Linux 二进制文件能够在浏览器环境中以令人印象深刻的性能执行。结果就是一个功能完整的 Linux 终端,具有 shell 访问、完整文件系统、网络功能和包管理——全部在一个浏览器标签页中执行。
WebVM 的实际意义重大。交互式文档可以嵌入终端环境,让读者执行命令并查看结果。在线编程平台可以提供完整的开发环境,而无需配置云服务器。教学材料可以包含离线可用的动手实验练习。安全研究人员可以轻松地在可丢弃的环境中安全地测试工具。在每种情况下,消除服务器基础设施都极大地简化了部署并降低了成本。
虚拟化架构
WebVM 的架构与传统的虚拟机或基于容器的方法有着根本的不同:
graph TD
A[Linux 二进制文件\nx86 机器码] --> B[CheerpX 引擎\nx86 到 WASM 翻译器]
B --> C[WebAssembly\n运行时程序码]
C --> D[浏览器引擎\nV8 / SpiderMonkey / JavaScriptCore]
D --> E[硬件\nCPU / RAM]
A --> F[虚拟文件系统\n内存中的块存储]
A --> G[虚拟网络\nWebSocket 代理]
A --> H[终端模拟器\nxterm.js 接口]
H --> I[用户交互\n浏览器 UI]CheerpX 引擎作为动态翻译器运作,在运行时将 x86 指令转换为 WebAssembly。这在根本上有别于模拟(在软件中解释每条指令)或容器化(共享主机内核)。这是在机器码层级的真正虚拟化,执行未经修改的二进制文件。
能力与限制
| 能力 | WebVM | 原生 Linux VM | Docker 容器 |
|---|---|---|---|
| 完整 Linux 内核 | 是(虚拟化) | 是 | 与主机共享 |
| 包管理器 | apt, pip, npm | 完整支持 | 每个映像 |
| GPU 加速 | 无 | 是 | 直通 |
| 持久存储 | 可选(下载) | 完整 | 卷 |
| 网络访问 | 是(代理) | 完整 | 桥接 |
| 浏览器集成 | 原生 | 无 | 无 |
| 冷启动时间 | 1-3 秒 | 数分钟 | 数秒 |
实际应用
WebVM 已在多个领域找到实际应用。技术文档平台嵌入终端环境,让读者无需离开文档页面即可执行示例命令。在线教育平台提供完整的 Linux 实验室,可在任何具有浏览器的设备上运作,包括 Chromebook 和平板电脑。开发者工具提供基于浏览器的代码编辑器,后端由完整的 Linux 环境支持,用于编译和测试。
安全模型是另一个优势。每个 WebVM 实例都完全沙箱化在浏览器的安全边界内。没有共享的文件系统,没有对主机的网络访问,除非明确保存,否则没有持久状态。这使得 WebVM 成为运行不受信任代码、测试潜在恶意脚本或提供隔离至关重要的用户端编程环境的理想环境。
对于 Leaning Technologies 来说,WebVM 也作为 CheerpX 的技术展示,展示了 x86 到 WebAssembly 虚拟化的能力。底层技术在服务器端 WebAssembly、边缘计算和传统应用程序迁移方面具有商业应用。
推荐的外部资源
- WebVM GitHub 存储库 – 源代码、问题和实时演示
- Leaning Technologies CheerpX – 驱动 WebVM 的虚拟化引擎
FAQ
什么是 WebVM? WebVM 是一个使用 WebAssembly 和 CheerpX 虚拟化引擎在浏览器中完整运行的 Linux 虚拟机。它提供完整的 Linux 环境,包含 shell 访问、文件系统、网络功能以及安装和运行软件的能力——完全不需要任何服务器端基础设施。
WebVM 如何实作浏览器内 Linux 虚拟化? WebVM 使用 Leaning Technologies 的 CheerpX 引擎,这是一个 x86 到 WebAssembly 的虚拟机。CheerpX 在运行时动态地将 x86 机器码翻译为 WebAssembly,使未经修改的 Linux 二进制文件能够在浏览器中执行。这种方法为 CPU 密集型任务提供了接近原生的性能,同时保持了浏览器的安全沙箱。
你可以用 WebVM 做什么? WebVM 提供完整的 Linux 终端环境,你可以在其中运行命令行工具、编译代码、管理文件、使用 apt 等包管理器以及运行开发服务器。它被用于交互式文档、编程教程、在线开发环境,以及任何需要完整 Linux 环境但无需服务器基础设施的场景。
WebVM 需要服务器后端吗? 不需要,WebVM 完全在客户端执行。所有计算均通过浏览器中的 WebAssembly 完成。唯一的服务器交互是用于提供初始静态文件,以及可选的下载额外软件包。即使服务器连接中断,虚拟机也会继续执行。
与原生 VM 相比,WebVM 有哪些限制? 与原生 Linux VM 相比,WebVM 有一些限制。它以单用户环境执行,无法访问主机操作系统的文件或进程,硬件访问有限(无 GPU 加速),且无法执行内核模块或 systemd。CPU 任务的性能普遍良好,但由于浏览器内的虚拟文件系统,I/O 操作较慢。
延伸阅读
- WebVM 在 GitHub 上 – 包含源代码和实时演示的存储库
- Leaning Technologies 的 CheerpX – WebVM 背后的 x86 到 WebAssembly 引擎
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!