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 位映像仍然可用,但不再主动维护:

表现

在带有 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 模拟器。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐