浏览器中的 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 次访问