浏览器中的 Linux:没有虚拟机、没有云,只有 WebAssembly — 计算的未来已经开始
技术的某些时刻悄悄地重新定义了可能性。它们不会伴随着华丽的产品发布或数十亿美元的营销活动——相反,它们源于开发人员的好奇心和坚持。
最近,发生了一件几乎未被注意到的事件。然而,它有可能改变我们对操作系统、浏览器甚至网络本身的看法。
历史上第一次,Linux— 现代计算的支柱 — 已成功移植到直接在网络浏览器中运行。不在云服务器上。不在虚拟机内。但实际上,在您的浏览器选项卡中。
它不是演示或模拟 — 它是真正的 Linux,在您眼前启动其内核并运行命令。
让我们深入探讨这个非凡的故事——单个开发人员如何命名乔尔·塞弗实现了曾经看似不可能的事情,这对未来意味着什么,以及为什么这个短语“没有虚拟机,没有云,只有 WebAssembly”可能成为计算历史上的下一个里程碑。
1. 改变一切的那一刻
在我们探讨其工作原理之前,有必要先了解一下它的革命性。
几十年来,“网络操作系统”的想法一直被讨论,但从未以有意义的方式实现。我们看到了云桌面、网络终端和基于浏览器的模拟器——但它们都依赖远程服务器来完成繁重的工作。
乔尔·塞弗所取得的成就是根本不同的。后两年的发展,他成功编译并启动了Linux内核- 版本6.4.16,准确地说——运行原生在 WebAssembly 中在浏览器内。
这意味着内核不是从服务器流式传输或通过 JavaScript 进行模拟。它在您的计算机上本地执行,并在浏览器沙箱的安全范围内。
Joel 本人在 Linux 内核邮件列表上谦虚地描述了这一点:
“在过去的两年里,我一直在慢慢地将 Linux 内核移植到 WebAssembly。它现在可以从 shell 启动并运行基本程序。它还不稳定,但这是一个很好的第一步。”
一个良好的第一步可能是今年的轻描淡写。
启动一个完整的操作系统内核——最初是为物理 CPU 和硬件设备设计的——在浏览器环境中,简直是非凡的。
2.了解WebAssembly(WASM)
让我们在这里暂停一下。要理解为什么这是开创性的,我们需要理解网络组装, 或者WASM。
WebAssembly 不是一种像 JavaScript 那样的编程语言——它是一种二进制格式允许浏览器执行用其他语言编写的代码,例如C、C++ 或 Rust以接近原生的速度。
简单来说:
WebAssembly 让您的浏览器运行复杂软件通常需要安装——例如视频编辑器、3D 游戏,甚至完整的编程环境。
它是安全的、沙盒的,并且旨在与 JavaScript 无缝协作。这意味着开发人员可以将 Web 技术的灵活性与编译语言的性能结合起来。
在过去的十年里,WebAssembly 悄然重塑了网络。您可能在没有意识到的情况下使用过它 - 在Figma的设计工具,AutoCAD 的在线版本, 或者Unity WebGL 等游戏引擎。
但乔尔·塞弗提出了一个不同的问题:
“如果 WebAssembly 可以高效地运行任何已编译的代码,它是否可以运行操作系统内核?”
这个问题引发了两年的实验,无数次失败的构建,最终成为网络历史上最迷人的里程碑之一。
3. 技术挑战:移植内核
当您想到像 Linux 这样的操作系统时,它不仅仅是软件,它还是一个直接与硬件(内存、CPU、I/O 设备和存储)交互的深层分层系统。
另一方面,浏览器生活在受限制的沙箱中。他们有无法直接访问出于安全原因,您的物理硬件。
那么,如何调和这两个极端呢?
乔尔不得不重建Linux内核的期望将硬件转化为抽象的东西——可以存在于浏览器中的东西。
他用了LLVM 18.1.2 工具链将内核代码编译成WebAssembly 字节码,然后将其与最小的瓶箱用户空间(基本 Linux 实用程序的轻量级集合)。
在浏览器内部,内核启动,安装一个虚拟文件系统,并运行基本命令,例如:
ls
cat
pwd
echo
它还不能做所有事情,但它的行为就像 Linux——因为它是Linux。
这就是神奇之处:
没有虚拟机。没有云服务器。没有仿真。
只是网络组装,在浏览器中本地执行内核。
那就是线的地方“没有虚拟机,没有云,只有 WebAssembly”完美地抓住了这一突破的本质。
4. 是什么让这如此困难?
在听说 Linux 运行后,在浏览器中启动 Linux 可能听起来很简单,但工程挑战却令人难以置信。
Linux 内核需要真正的硬件。它期望:
- 来自 CPU 的中断
- 访问内存和 I/O 总线
- 设备驱动程序
- 虚拟内存管理器 (MMU)
在浏览器中,这些都不存在。
为了使其发挥作用,Joel 构建了自定义抽象:
- 虚拟设备模仿硬件组件的行为。
- 系统调用重映射,将内核请求转换为与 WebAssembly 兼容的操作。
- 进程隔离使用网络工作者,模拟多个CPU。
他甚至不得不重新考虑内存管理WebAssembly 没有硬件 MMU。相反,每个进程都在自己的工作线程中运行,从而创建了虚拟 CPU 假象。
网络还不存在,还有许多低级功能,例如fork()或者longjmp()不受支持——但它是一个坚实的基础。
如果你仔细想想,这就像将汽油发动机变成电动发动机,同时保持相同的活塞和齿轮。它不仅仅是一个翻译——它是对内核环境的重新发明。
5. 对照表:传统虚拟化与 WebAssembly Linux 端口对比
| 特征 | 传统虚拟机 | WebAssembly 上的 Linux(浏览器) |
|---|---|---|
| 执行地点 | 远程或本地管理程序 | 直接在浏览器中 |
| 硬件访问 | 全虚拟硬件层 | 抽象的 WebAssembly 沙箱 |
| 表现 | 近乎原生(有硬件辅助) | 高,但受浏览器限制 |
| 安全 | 通过管理程序隔离 | 通过浏览器沙箱隔离 |
| 设置 | 需要安装和配置 | 只需打开浏览器选项卡 |
| 联网 | 全栈可用 | 目前有限 |
| 贮存 | 虚拟磁盘映像 | 虚拟内存文件系统 |
| 使用案例 | 服务器、虚拟化、测试 | 教育、演示、安全实验 |
| 标语 | “你的操作系统在另一个操作系统中” | “没有虚拟机,没有云,只有 WebAssembly” |
该表显示了这种新范例有多么不同。它不是虚拟化,也不是仿真——它是全新的东西。
6. 为什么这对未来很重要
乍一看,这似乎是一个有趣的实验。但其影响是深远的。
教育培训
想象一下,在一个教室里,每个学生都可以立即启动完整的 Linux 环境,而无需安装任何东西。
没有双启动设置。没有破坏其系统的风险。
只需打开 Chrome 或 Firefox,即可开始安全地学习 Linux 命令。
软件测试
开发人员可以直接从任何操作系统测试他们的软件在 Linux 上的行为方式。视窗用户? Mac 用户?没问题 - 只需打开浏览器选项卡即可。
安全研究
在浏览器内的沙盒 Linux 环境中运行代码可以最大限度地降低恶意软件影响主机系统的风险。它是研究和逆向工程的完美实验室设置。
辅助功能和便携性
这种方法打破了平台的界限。浏览器成为通用运行时——而不是操作系统。
如果你在的话并不重要安卓、macOS、Windows 或 ChromeOS — 如果您有现代浏览器,则可以运行 Linux。
这很容易成为有史以来最便携的计算形式。
7. 其背后的哲学
这一成就有其诗意的一面。
Linux 一直代表着自由度和便携性— 在从超级计算机到智能手表的所有设备上运行。
但在浏览器中运行则使这一想法更进一步。
这不再是运行 Linux 的问题在硬件。这是关于运行 Linux超过硬件——在一个本身到处运行的抽象层中。
这不仅仅是技术创新,更是技术创新。这是哲学的。
它表明硬件和软件之间的界限正在消失,被通用抽象所取代。
本着开源,Joel 的工作体现了最初构建 Linux 时的黑客心态——实验、修补和探索,不是因为它很容易,而是因为它可能的。
8. Linux 社区的想法
在网上宣布这样的事情Linux 内核邮件列表非同小可。这就是一些最有经验的内核开发人员的所在——包括莱纳斯·托瓦尔兹他自己——讨论核心架构。
因此,当 Joel 在那里展示他的 WebAssembly 端口时,引起了人们的好奇和惊讶。
许多开发人员承认它的技术才华,而另一些开发人员则对其长期应用感到好奇。
一些人称之为“概念证明”;另一些人则称之为“概念验证”。其他人表示,它可以为轻量级计算开辟新领域。
但有一件事是明确的——没有人驳回它。
9. 下一步是什么?
目前的实施仍处于早期阶段。它有时会崩溃,缺乏网络,并且还不支持复杂的多任务处理。
但与所有开源项目一样,这只是一个开始。
现在 Joel 已经公开发布了代码GitHub其他人可以做出贡献——修复错误、优化性能,甚至通过虚拟帧缓冲区添加对图形界面的支持。
如果社区接受它,我们可能很快就会看到基于浏览器的Linux桌面运行图形应用程序——想象一下侏儒或 Chrome 中的 XFCE,完全在客户端运行。
10. 问题与解答
Q1:我可以用它来替换我的主操作系统吗?
不——至少现在还不是。它不稳定,适用于实验,而不是生产用途。
Q2:这需要互联网或远程服务器吗?
不!这就是它的美妙之处。加载后,它会在您的浏览器中本地运行。没有云,没有虚拟机。
Q3: 安全吗?
是的,浏览器将 WebAssembly 代码隔离在安全沙箱内,防止其直接访问您的文件或硬件。
Q4: 我现在可以用它做什么?
您可以探索基本的 Linux 命令,了解内核如何启动,并学习系统级概念 - 所有这些都无需接触主机操作系统。
Q5:哪些浏览器支持最好?
基于 Chromium 的浏览器,例如谷歌浏览器或者边缘目前,WebAssembly 的性能和线程处理能力比 Firefox 更好,尤其是在调试过程中。
11. 超越极限:思考计算的新方式
让我们退后一步,看看更大的图景。
当您打开该选项卡并观看 Linux 内核启动时,您会看到相互堆叠的技术层:
- 一个20世纪90年代操作系统设计,
- 编译成网络组装,
- 运行在一个现代浏览器,
- 在另一个操作系统之上,
- 在从未为此设计的硬件之上。
这是抽象之上的抽象——但它确实有效。
这就是计算机科学的美妙之处:证明限制主要存在于我们的想象力中。
12. 最后的想法
该项目不仅仅是在浏览器中运行 Linux。这是关于重新定义“本地计算”含义的界限。
几十年来,我们一直使用浏览器作为网站和云服务的门户。现在,通过这样的项目,浏览器本身正在变得操作系统平台。
一名开发人员花费了两年时间,付出了巨大的毅力——突然间,“Linux 可以运行的地方”的定义发生了永远的改变。
乔尔·塞弗 (Joel Sever) 的作品提醒我们,创新往往始于好奇心,最终以革命性的成果告终。
因此,下次打开浏览器时,请记住:操作系统的未来可能已经在新选项卡后面加载。但如果您想尝试一下,请阅读下一篇文章
浏览器中的 Linux:如何自己使用它 — 没有虚拟机,没有云,只有 WebAssembly
#Linux #WebAssembly #WASM #技术 #OpenSource #Innovation #FutureOfComputing #BrowserOS #NoVMNoCloud #LinuxInBrowser
已访问 19 次,今天 2 次访问
