Update 3 files

- /_data/other_repo_list.csv
- /_data/links.csv
- /_posts/2025-12-01-linux.md
This commit is contained in:
mayx
2026-03-23 14:07:38 +00:00
parent e094b6d205
commit cd478c22a2
3 changed files with 5 additions and 15 deletions

View File

@@ -12,7 +12,7 @@ tags: [浏览器, Linux, 虚拟机, WASM]
# 在浏览器中运行Linux
## 虚拟机方案
### 纯JS虚拟机
要说到在浏览器上运行Linux最先想到的应该就是[Fabrice Bellard](https://bellard.org)大神写的[JSLinux](https://bellard.org/jslinux/)吧这可能是第一个在浏览器中实现的虚拟机毕竟是最强虚拟机QEMU的作者编写的。现在他的个人主页中展示的这个版本是WASM版本而他最早写的是纯JS实现的。那个JS实现的版本现在在GitHub上有一个[去混淆的版本](https://github.com/levskaya/jslinux-deobfuscated)可以用作学习和研究于是我顺手Fork了一份在GitHub Pages上部署作为[演示](http://mabbs.github.io/jslinux/)。
要说到在浏览器上运行Linux最先想到的应该就是[Fabrice Bellard](https://bellard.org)大神写的[JSLinux](https://bellard.org/jslinux/)吧这可能是第一个在浏览器中实现的虚拟机毕竟是最强虚拟机QEMU的作者编写的。现在他的个人主页中展示的这个版本是WASM版本而他最早写的是纯JS实现的。那个JS实现的版本现在在GitHub上有一个[去混淆的版本](https://github.com/levskaya/jslinux-deobfuscated)可以用作学习和研究于是我顺手Fork了一份在GitHub Pages上部署作为[演示](https://mabbs.github.io/jslinux/)。
作为纯JS实现的x86虚拟机性能估计是最差的但相应的兼容性也最好在Bellard当年写JSLinux的时候还没有WASM这种东西呢所以即使是在不支持WASM的IE11中也可以正常运行。假如我想把它作为终端用在我的博客上似乎也是个不错的选择即使我完全看不懂代码不知道如何实现JS和虚拟机的通信它也预留了一个剪贴板设备可以让我轻松地做到类似的事情比如我在里面写个Bash脚本通过它和外面的JS脚本联动来读取我的文章列表和内容那也挺不错。
当然Bellard用纯JS编写虚拟机也不是独一份他实现了x86的虚拟机相应的也有人用纯JS实现了RISC-V的虚拟机比如[ANGEL](https://github.com/riscv-software-src/riscv-angel),看起来挺不错,所以同样也顺手[搭了一份](https://mabbs.github.io/riscv-angel/)。只不过它似乎用了一些更先进的语法至少IE11上不能运行。
另外还有一个比较知名的项目,叫做[jor1k](https://github.com/s-macke/jor1k)它模拟的是OpenRISC架构。只是这个架构目前已经过时基本上没什么人用了不过这里面还内置了几个演示的小游戏看起来还挺有意思。