网站首页 文章专栏 历史性突破:开发者耗时两年,成功在浏览器中原生运行 Linux 内核
开发者 Joel Severin 成功将 Linux 内核移植到 WebAssembly 平台,使其可以在网页浏览器中原生运行,尽管面临技术挑战。
11 月 5 日消息,科技媒体 golem 昨日(11 月 4 日)发布博文,报道称开发者 Joel Severin 近日在 Linux 内核邮件列表中宣布,他历时约两年,成功将 Linux 内核移植到了 WebAssembly(Wasm)平台,让 Linux 可以作为原生应用直接在网页浏览器中启动和运行。
Severin 同时在其 GitHub 项目页面上提供了可供公众在线体验的演示版本,用户无需安装任何软件,在浏览器中等待数秒即可启动 Linux 内核并进入一个基础的命令行环境。

IT之家援引博文介绍,尽管实现了在浏览器中运行 Linux 的创举,但该项目受限于 Wasm 的固有特性,面临诸多技术挑战。
首先,由于 Wasm 不模拟内存管理单元(MMU),应用程序和操作系统内核被迫在同一地址空间中运行,这让程序中的错误有可能直接破坏内核,带来稳定性风险。
此外,Wasm 的原生安装包格式也不同于 Linux 内核默认的 ELF 格式,Severin 为此对内核及 Busybox 环境中的程序代码进行了多处修改。
该项目面临的另一个核心难题是 Wasm 不支持中断程序,导致操作系统无法实现抢占式多任务处理,即无法主动切换不同应用进程。

为解决此问题,该项目采用了一种巧妙的变通方法:每当需要创建新线程或新进程时,系统就会模拟启动一个全新的“处理器”来运行它。利用 Linux 内核最高可支持 8192 个处理器的特性,该方案在理论上满足了多任务并发的需求,但也反映了当前 Wasm 在系统级支持上的局限。
Severin 坦言,该项目目前主要是一项探索技术可能性的概念验证(Proof of Concept),其实用价值有限,更像是一次技术“奇观”,类似于此前出现的“在 PDF 中运行 Linux”等项目。
该移植版目前不仅使用了较旧的 Linux 6.4.16 内核,还存在一些已知错误,例如重启命令会导致堆栈损坏,以及控制台在运行一段时间后会稳定失灵。
