Windows 2000 可以在浏览器里跑了,缺点就是速度慢。
JSLinux
JSLinux
在浏览器中运行 Linux 或其他操作系统!
可以使用以下仿真系统:
中央处理器 | 操作系统 | 用户 界面 | VF同步 访问 | 启动 链接 | TEMU 配置 | 评论 |
---|---|---|---|---|---|---|
x86 | 阿尔派Linux 3.12.0 | 安慰 | 是的 | 点击这里 | 网址 | |
x86 | 阿尔派Linux 3.12.0 | X窗口 | 是的 | 点击这里 | 网址 | 鼠标右键为菜单。 |
x86 | 视窗2000 | 图形化 | 不 | 点击这里 | 网址 | 免责声明。 |
x86 | 自由DOS | VGA 文本 | 不 | 点击这里 | 网址 | |
RISCV64 | 构建根目录(Linux) | 安慰 | 是的 | 点击这里 | 网址 | |
RISCV64 | 构建根目录(Linux) | X窗口 | 是的 | 点击这里 | 网址 | 鼠标右键为菜单。 |
RISCV64 | Fedora 33(Linux) | 安慰 | 是的 | 点击这里 | 网址 | 警告:启动时间较长。 |
RISCV64 | Fedora 33(Linux) | X窗口 | 是的 | 点击这里 | 网址 | 警告:启动时间较长。鼠标右键为菜单。 |
-----------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
JSLinux - 技术说明
历史
这个模拟器已经有很长的历史了。当前版本基于TinyEMU并使用emscripten编译为 Javascript 或 WASM 。
2011 年,我编写了 JSLinux 的初始版本,这是第一个运行 Linux 的 Javascript PC/x86 模拟器。我为 x86 助手和设备 重复使用了另一个模拟器 ( QEMU )的部分内容。
一段时间后(2015 年),我将其修改为使用asm.js Javascript 子集,以便在支持它的浏览器中速度更快。
2016 年,在编写了TinyEMU(最初是一个 RISC-V模拟器)后,我决定使用emscripten从其 C 代码制作一个 Javascript 版本。我添加了一个VirtIO 9P 文件系统,其灵感来自Sebastian Macke 的jor1k中 的文件系统,以便更轻松地使用远程文件系统以及导入或导出文件。
然后我发现将 VirtIO 设备重用于 x86 JS 模拟器很有趣,因此我将 JSLinux asm.js 代码转换为 C 代码,并使用emscripten将其转换回 Javascript !经过仔细调整,新版本现在比手工编码的 asm.js 版本更快。
下一步是运行 Linux 之外的另一个操作系统,例如 Windows NT。该模拟器的第一个版本在模拟的 Linux 系统中运行带有 QEMU 的 Windows NT。它仍然可用,因为 x86 模拟器支持 QEMU 使用的 x86 虚拟化扩展 (AMD SVM)。
当前版本的 JSLinux 通过模拟少数缺失的 PC 设备(PS/2 键盘和鼠标、IDE 磁盘、虚拟 VGA)来运行 Windows NT。
x86 CPU 仿真
模拟具有以下功能的 x86 CPU:
- 奔腾级CPU
- x87 位精确 80 位浮点数
- PAE支持
- CMOV指令
- MMX 和 SSE2 支持
- 具有嵌套页表支持的 AMD 虚拟机扩展 (SVM)
- RDPMC支持读取指令计数
已知限制:
- 访问内存时无段限制和权限检查
- 无调试支持(DRx 寄存器)
模拟设备
- 8259 可编程中断控制器
- 8254 可编程中断定时器
- 16450 UART(仅用于调试)
- 实时时钟
- PCI总线
- VirtIO 控制台
- VirtIO 9P 文件系统
- VirIO网络
- VirtIO块设备
- VirIO输入
- 简单的帧缓冲区
- IDE 控制器(可选)
- PS/2 键盘和鼠标(可选)
- 虚拟 VGA 显示器(可选)
RISC-V CPU 仿真
使用 64 位 FPU 和压缩指令来模拟 32 位或 64 位 RISC-V CPU。
现在仅提供 RISC-V 64 位 Buildroot 和 Fedora 发行版。RISC-V 32 位映像仍然可用,但不再主动维护:
- 带控制台的buildroot-riscv32。
- 带有 X Window 的buildroot-riscv32 。
表现
在带有 Firefox 浏览器的典型台式电脑 (2017) 上,x86 模拟器的运行速度约为 100 MIPS。使用集成实用程序可以进行详细的基准测试vmtime
。
JavaScript 终端
它是原始 JSLinux 的改进版本。它有一个滚动条并支持 URL 高亮显示。
Linux发行版
它使用Alpine Linux 和Buildroot 发行版。为 vfsync、qemacs、tcc 添加了自定义包。Fluxbox窗口管理器提供可选的 X Window 支持 。
联网
模拟器内可以访问互联网。它使用 Benjamin Burns 提供的 websocket VPN(请参阅他的博客)。带宽上限为 40 kB/s,每个公共 IP 地址最多允许两个连接。请不要滥用该服务。
什么用途 ?
我这样做是为了好玩,只是因为 Javascript 引擎足够快,可以完成复杂的事情。实际用途可能是:
- Javascript 引擎的基准测试(Javascript 引擎启动 Linux 需要多长时间?)以及新浏览器技术(asm.js、WASM)的使用。
- 学习在不离开浏览器的情况下使用命令行 Unix 工具。
- 浏览器内的安全文件访问 (vfsync)。
- 运行旧的 PC 软件。
源代码
RISC-V 版本的源代码可在TinyEMU项目中获取。还提供预编译且易于安装的演示。
类似项目
还有其他几个 PC 或 Linux 模拟器可用。尤其:
- jor1k:OpenRISC OR1K CPU 模拟器。
- v86:PC 模拟器。
- Angel:RISC-V CPU 模拟器。