这是叉子 副本/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的后端与上游没有变化.
或 #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位内核不支持.
- 构建根 可用于构建最小图像. 驼峰/眉毛-vm 财务报告和审定财务报表 darin755/浏览器建设根 有一些有用的脚本 用于构建一个.
- SkiffOS 系统 (基于Buildroot)可以交叉编译自定义图像.
- Ubuntu等Debian衍生产品的工作达到了支持i386的最新版本 (16.04 LTS或18.04 LTS 对于一些变体).
- 阿尔卑斯·利努作品. 图像可以从 Docker 文件中建出 工具/码头/高山/。 。 。 .
- Arch Linux 32作品. 见 阿尔克林努斯.md 用来构建一个图像.
- 反应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许可证的规定分发,参见: 自由主义。下列第三方依赖性包括在 使用自己的许可证储存:
lib/softfloat/softfloat.clib/zstd/zstddeclib.ctests/kvm-unit-tests/tests/qemutests/src/floppy.js/包含根据麻省理工学院许可证从qemu移植的部件,参见LICENSE. 麻省理工学院.
贷项
- CPU 测试案例通过 卡塔尔
- 更多测试通过 kvm 单位测试
- 兹斯特德 包含支持以更好地压缩状态图像
- 伯克利软花板 包含以精确模拟80位浮点数
- Jor1k项目 用于 9p 、 文件系统和 uart 驱动程序
- 赢取世界 一些旧操作系统的源
- OS/2博物馆 一些旧操作系统的源
- 存档OS 多个操作系统的源
还有问题吗?
给我一个电子邮件 [email protected]请在 GitHub 上报告错误 .