@aptre/v86

中文文档
0.6.10发布于 2026/10/12BSD-2-ClauseTypeScriptES Module零依赖构建来源已验证近 30 天下载 2.2万

x86 PC 模拟器和 x86- to-wasm JIT,在浏览器中运行

中文使用文档
文档目录11 节
  1. 演示文稿
  2. 文档
  3. 兼容性
  4. 如何建设,跑和嵌入?
  5. 或者使用 Docker 构建
  6. 通过 Dev 容器运行
  7. 测试
  8. API 示例
  9. 许可证
  10. 贷项
  11. 还有问题吗?

这是叉子 副本/v86 具有下列增强功能:

  • 类型脚本迁移: JavaScript 前端翻译为 TypeScript esbuild + tsgo 构建工具. 发表于 @aptre/v86 与无害环境管理和 TypeScript 声明.
  • 不断增长的记忆数字 : growMemory(bytes) API 动态扩展的来宾 运行时使用WebAssembly导入的内存进行RAM.
  • 维蒂奥-v86fs: 自定义 Virtio 文件系统设备, 并设置了二进制 协议,基于 DMA 的数据传输,页面缓存集成, 推动无效, 和256塔克同时请求支持。 允许将主机目录安装到 带完整 POSIX 语义的来宾(用 git 测试).
  • 维蒂奥-米姆: 由来宾启动的记忆热插件管理设备.
  • 国家保存/恢复修正数字 : last_result 现在正确维持注册 跨州快照,修复后断断续续的断言失败.

Virtio-v86fs 内核模块和相关内核补丁位于 孔径/线程 仓库 编辑 v86 树枝。 Rust/WASM的后端与上游没有变化.


Join the chat at https://gitter.im/copy/v86 或 #v86 打开 (原始内容存档于2013-10-12). irc.libera.chat

v86仿制出相容于x86的CPU和硬件. 机器代码翻译为 运行时的WebAssembly模块,以实现体面的性能. 这是 模拟硬件列表 :

  • 一个x86相容的CPU. 该指令集围绕Pentium 4级, 包括完整的SSE3支持. 缺少一些特征,特别是:
    • 任务门, 在保护模式下远程呼叫
    • 约 16 位保护模式特性
    • 单步( 陷阱旗、 调试登记册)
    • 一些例外,特别是浮点和SSE
    • 多方
    • 64 位扩展
  • 一个浮点单位(FPU). 使用伯克利号进行计算 SoftFloat库,因此应该精确(但缓慢). 三角形 和日志函数使用64位浮点模拟,可能不太精确. 并非所有 FPU 例外都被支持 .
  • 软盘控制器(8272A).
  • 8042键盘控制器 PS2. 由鼠标支持.
  • 8254可编程相间计时器(PIT).
  • 8259可编程中断控制器.
  • 部分APIC支持.
  • 一个CMOS实时时钟(RTC).
  • 具有SVGA支持和Bochs VBE扩展功能的通用VGA卡.
  • PCI公交车. 这个部分不完整,并非每个设备都使用.
  • 一个IDE磁盘控制器.
    • 一个内置的ISO 9660光盘生成器.
  • An NE2000 (RTL8390) PCI网络卡.
  • 各种virtio设备:Filesystem(9p和v86fs),网络,气球和内存热插.
  • 收音机16个音卡.

演示文稿

9 前页 —— 说 阿尔奇 Linux —— 说 Android-x86 1.6-r2 (英语) —— 说 Android-x86 4.4-r2 (英语) —— 说 基本链接 —— 说 构建根基 Linux —— 说 该死的小Linux —— 说 埃尔克斯 —— 说 免费DOS —— 说 免费BSD —— 说 菲维克索斯 —— 说 海库 —— 说 SkiffOS 系统 —— 说 反应OS —— 说 视窗 2000 —— 说 视窗 98 —— 说 视窗 95 —— 说 视窗 1.01 —— 说 MS-DOS 6.22号卫星 —— 说 打开BSD —— 说 奥伯伦 —— 说 科利布里奥斯 —— 说 缩写OS —— 说 QNX 数据

文档

如何运作 —— 说 联网 —— 说 Alpine Linux 客机设置 —— 说 Arch Linux 客机设置 —— 说 Windows NT 来宾设置 —— 说 Windows 9x 客机设置 —— 说 9p 文件系统 —— 说 9p 上的 Linux rootfs 数据 —— 说 剖析 —— 说 CPU 编码

兼容性

以下是v86中支持的操作系统概述:

  • Linux的工作相当出色. 64位内核不支持.
  • 反应OS工作.
  • FreeDOS,Windows 1.01和MS-DOS运行非常顺利.
  • KolibriOS的工作原理.
  • 海库工作.
  • Android-x86已经测试到4.4-r2.
  • Windows 1, 3.x, 95, 98, ME, NT 和 2000 运行合理.
  • Windows XP, Vista 和 8 在某些条件下工作(见 86号, (中文(简体) ), 208号(中文(简体) )
  • 许多爱好操作系统都有效.
  • 9个前期作品.
  • 9计划不起作用.
  • QNX工作顺利.
  • OS/2没有用.
  • FreeBSD的工作原理.
  • OpenBSD以特定的启动配置工作. 在那个 boot> 提示类型 boot -c,然后在 UKC> 提示 disable mpbios 财务报告和审定财务报表 exit。 。 。 .
  • NetBSD 只使用自定义内核工作, 参见 350号。 。 。 .
  • 静态OS工作(只有32位版本).
  • 缩写OS 工作时.

您可以在此获取磁盘图像中的一些信息 : https://github.com/影印本/图像。 。 。 .

如何建设,跑和嵌入?

你需要的就是: 爱丽丝

  • 包头 (运行时间和软件包管理器)
  • Rust with the ham32-unknown-unknown-unknown target (用于WASM后端) 的 Rust (用于 WASM 后端)
  • 与 Rust 兼容的 Cang 版本
  • 进行测试:鼻、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克-克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克、克等
bun install        # install dependencies
bun run build      # production build (ESM + browser bundle in dist/)
bun run build:debug # debug build (with DEBUG=true)
bun run typecheck  # type-check with tsgo
bun run lint       # lint with eslint
bun run format     # format with prettier
bun run test       # run tests with vitest

见 工具/挂载/测试图像/挂载文件 在Debian上设置完整设备或 WSL 维基月球。 。 。 .

WASM 后端仍然以 make (需要Rust工具链). 运行 make 用于调试构建( e)debug.html)或(或) make all 用于优化的 建筑(index.html) (中文(简体) ). TypeScript/JavaScript 前端用包包构建 上面的命令.

ROM和磁盘图像是通过 XHR 装入的,所以如果您想要尝试 HTML 本地文件,确保从本地的网络服务器中为它们服务。 你用得着 make run 用于使用 Python 的 http 模块服务文件.

如果您只想将 v86 嵌入网页, 请检查 实例。对于基于捆绑器的设置,从 npm 安装: bun add @aptre/v86

或者使用 Docker 构建

  • 如果安装了多克,可以在容器内运行整个系统.
  • 见 tools/docker/exec 要找到此所需的 Docker 文件 .
  • 你们可以跑 docker build -f tools/docker/exec/Dockerfile -t v86:alpine-3.19 . 从根目录生成插件图像.
  • 那你可以随便跑一跑 docker run -it -p 8000:8000 v86:alpine-3.19 启动服务器.
  • 检查 localhost:8000 用于主机服务器.

通过 Dev 容器运行

  • 如果您正在使用一个支持Dev Containers的IDE,例如GitHub Codespaces,Visual Studio代码远程容器扩展,或者可能的其他例如Jetbrains' IntelliJ EIDO,您可以在Dev Container中设置开发环境.
  • 遵循您开发环境的指示设置容器.
  • 运行任务"Fetch图像",以下载图像进行测试.

测试

用于测试的磁盘图像不包含在本寄存器中. 你们可以 使用:

curl --compressed --output-dir images/ --remote-name-all https://i.copy.sh/{linux.iso,linux3.iso,linux4.iso,buildroot-bzimage68.bin,TinyCore-11.0.iso,oberon.img,msdos.img,openbsd-floppy.img,kolibri.img,windows101.img,os8.img,freedos722.img,mobius-fd-release5.img,msdos622.img}

运行集成测试 : make tests

运行所有测试 : make jshint rustfmt kvm-unit-test nasmtests nasmtests-force-jit expect-tests jitpagingtests qemutests rust-test tests

见 测试/读取 更多信息.

API 示例

将v86用于自己的目的,和:

var emulator = new V86({
    screen_container: document.getElementById("screen_container"),
    bios: {
        url: "../../bios/seabios.bin",
    },
    vga_bios: {
        url: "../../bios/vgabios.bin",
    },
    cdrom: {
        url: "../../images/linux.iso",
    },
    autostart: true,
});

见 启动器.ts 为全API.

许可证

v86根据简化BSD许可证的规定分发,参见: 自由主义。下列第三方依赖性包括在 使用自己的许可证储存:

贷项

还有问题吗?

给我一个电子邮件 [email protected]请在 GitHub 上报告错误 .

版本与发布记录

@aptre/v86 共发布 12 个版本,首次发布于 2026/03/27;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.10latest2026/10/1226 天前
0.6.92026/10/1226 天前
0.6.82026/03/307 个月前
0.6.72026/03/307 个月前
0.6.62026/03/297 个月前
0.6.52026/03/297 个月前

关于 @aptre/v86 的常见问题

@aptre/v86 是什么?

x86 PC 模拟器和 x86- to-wasm JIT,在浏览器中运行

如何安装 @aptre/v86?

在项目目录运行 npm install @aptre/v86,或使用 pnpm add / yarn add / bun add。

@aptre/v86 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aptre/v86 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aptre/v86 可以商用吗?

@aptre/v86 使用 BSD-2-Clause 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aptre/v86 的下载量有多少?

根据 npm 官方下载统计,@aptre/v86 在 2026/10/07 – 2026/11/05 这 30 天内被下载 22,094 次,日均约 736 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aptre/v86 还在维护吗?

最新版本 0.6.10 发布于 2026/10/12(26 天前);至今共发布 12 个版本,其中过去 12 个月发布了 12 个;首次发布于 2026/03/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。