webVM 是一个完全运行在浏览器里的 Linux 虚拟机,不需要安装系统,也不需要配置环境。只需打开浏览器,就可以直接运行一个完整的 Linux 虚拟机。

它不是远程连接到某个 Linux 服务器,而是真正将 Linux 运行在本地浏览器中。webVM 基于 HTML5 和 WebAssembly,能够完美兼容 Linux ABI,直接运行未经修改的 Debian 发行版,并内置了多个常用的开发工具链,比如 Python、GCC、vim 等等。

webVM 介绍


1. webVM 架构

webVM 的核心架构由四个模块组成:

  1. CheerpX 虚拟引擎
    一个基于 WebAssembly 的虚拟化引擎,也是 webVM 的核心。它包含一个 X86 到 WebAssembly 的 JIT 编译器,能够将 x86 指令集转换为 WebAssembly,使 Linux 代码可以在浏览器中运行。

  2. 虚拟存储后端
    负责文件和数据管理,确保 webVM 在运行时能高效读写数据。

  3. 网络传输层
    基于 Tailscale 的网络通信架构,提供稳定、安全的网络通信。

  4. 终端模拟器
    由 HTML 和 xterm 组成,让用户可以直接在浏览器中使用完整的 Linux 终端,无论是编写代码还是执行 Linux 命令,都能获得流畅的体验。


2. webVM 优点

由于 webVM 完全部署在本地浏览器中,相比传统的 Linux 虚拟机部署方式,它具有以下优点:

  1. 部署简单
    不需要安装 VMware、VirtualBox 等虚拟机软件,直接使用浏览器即可完成部署。

  2. 即开即用
    只需在浏览器中打开对应的网址,就可以开始使用 Linux。

  3. 跨平台
    Linux 运行在浏览器中,无论是 MacOS、Linux 还是 Windows,只要电脑安装了浏览器,都可轻松部署;甚至移动端的 iOS 和安卓也能运行。


3. 部署 webVM

webVM 可以通过它的 GitHub 开源项目去在线体验。项目中内置了 Python、GCC、Node.js 等开发工具,并在左侧展示系统状态信息,甚至支持使用 Claude AI 来操控 Linux。

那如何使用 webVM 部署一个 Linux 虚拟机呢?webVM 目前支持两种部署方式:

  • GitHub Actions 部署
    操作简单,适合希望快速上手、无需复杂配置的用户。

  • 本地部署
    适用于需要更多系统权限或进行自定义配置的用户,但需要用户下载镜像文件、配置环境并启动服务器,对不熟悉服务器配置的用户来说门槛较高。

这里我们采用 GitHub Actions 部署方式,整个流程在所有操作系统中都是相同的,真正实现了多平台兼容。

部署步骤:

  • Fork 项目:
    首先 fork 项目到自己的代码仓库,点击 fork 后再点击 「Create fork」。

  • 设置 Pages:
    fork 完成后,进入仓库设置,在左侧找到 Pages,选择 Source 为 GitHub Actions。

  • 允许工作流:
    点击上方的 Actions,允许执行工作流。

  • 启动部署:
    点击左侧的 Deploy,再点击右侧的 Run workflow。这里 Dockerfile 和 image size 保持默认,点击执行 workflow。

  • 等待部署完成:
    等待几分钟后,打开 deploy 工作流,可以看到部署正在进行中。部署完成后,会生成一个 Linux 虚拟机的网址。

  • 体验 Linux:
    打开网址后,执行几条 Linux 命令来试一下。注意:第一次执行命令时可能比较慢,第二次执行同类命令速度就会快很多。这是因为 webVM 采用了按需加载机制,只有在需要使用某个资源时才加载,而不是在系统启动的时候,就一次性加载所有资源,从而大大缩短了加载时间,使系统运行更加流畅。

    在这个 examples 文件夹里面,内置了一些不同语言的代码。我们来执行一下这个,Python 的斐波那契代码试试。执行成功了,由于 webVM 是按需加载的,所以第一次执行会比较慢。我们再来执行一次,可以发现第二次速度就快很多了。然后再来执行一下,这个 c 语言的 hello world,运行也没有问题。这样我们就可以,使用这个 Linux 虚拟机,来进行代码开发,或者学习一些,Linux 的操作命令了。


4. webVM 添加文件 & 预装应用程序

除了直接使用 Linux,webVM 还支持给 Linux 添加文件和预装应用程序,方便用户进行个性化配置和开发环境搭建。

  • 添加文件:
    点击 「Code」 打开 documents 文件夹,其中存放了一些内置文件。如果需要添加新的文件,只需将文件放入该文件夹中。
    examples 文件夹中,存放着各类内置代码(如 Python、C、Node.js 等)。例如,在 Python 文件夹中添加一个 Python 文件:

    • 点击 「Add file」,选择 「创建新文件」;

    • 粘贴代码(示例为打印杨辉三角的 Python 代码),输入文件名后点击 「Commit」 就可以了。
      (也可以使用 Git 命令在本地进行操作。)

  • 预装应用程序:
    点击 dockerfile 文件夹,打开 Debian mini 文件。如果希望在 Linux 中预装应用程序,可以将相应命令添加到 apt install 语句后面。例如,预装用于下载文件的 wget 工具:

    • 编辑文件,在 apt install 后添加 wget,然后点击 「Commit」。

部署完成后,重新部署服务。注意:这次可以适当调大 image size,但最好不要超过 950M,因为 GitHub Pages 的部署文件大小限制为 1GB;如果需要更大的 Linux 系统,可选择本地部署的方式。

部署完成后,打开 Linux 虚拟机的网址,来验证下 wget 是否成功预装了,并测试添加的 Python 文件(杨辉三角)看能不能正常运行。

验证效果


5. 总结

通过上面的介绍,我们可以发现。webVM 非常适合用于 Linux 教学。它部署便捷、操作简单,而且不受操作系统限制,非常容易上手。除此之外,用户还可以根据教学需要为 Linux 添加各类代码、文档,并预装必要的应用程序,可以极大地提升开发和学习的效率。