| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
or #v86 on irc.libera.chat
v86 emulates an x86-compatible CPU and hardware. Machine code is translated to WebAssembly modules at runtime in order to achieve decent performance. Here's a list of emulated hardware:
9front — Arch Linux — Android-x86 1.6-r2 — Android-x86 4.4-r2 — BasicLinux — Buildroot Linux — Damn Small Linux — ELKS — FreeDOS — FreeBSD — FiwixOS — Haiku — SkiffOS — ReactOS — Windows 2000 — Windows 98 — Windows 95 — Windows 1.01 — MS-DOS 6.22 — OpenBSD — Oberon — KolibriOS — SkiftOS — QNX
How it works — Networking — Dial-up modem networking — Alpine Linux guest setup — Arch Linux guest setup — MS-DOS/FreeDOS guest setup — Windows 3.1x guest setup — Windows 9x guest setup — Windows NT guest setup — 9p filesystem — Linux rootfs on 9p — Profiling — CPU Idling
Here's an overview of the operating systems supported in v86:
You can get some information on the disk images here: https://github.com/copy/images.
You need:
See tools/docker/test-image/Dockerfile for a full setup on Debian or WSL.
Run make to build the debug build (at debug.html).
Run make all to build the optimized build (at index.html).
ROM and disk images are loaded via XHR, so if you want to try out index.html locally, make sure to serve it from a local webserver. You can use make run to serve the files using Python's http module.
If you only want to embed v86 in a webpage you can use libv86.js. For usage, check out the examples. You can download it from the release section.
For bundler-based setups (Vite/React/Next/Webpack), there is also an official npm package: https://www.npmjs.com/package/v86
This package was originally maintained by @giulioz (bundler-optimized fork) and was made "official" for this repo by @basicer with the author's permission. It is published automatically from this repository via GitHub Actions (.github/workflows/ci.yml, Upload release job) on pushes to master and uses npm publish --provenance.
Install: npm install v86
The disk images for testing are not included in this repository. You can download them directly from the website using:
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}
Run integration tests: make tests
Run all tests: make jshint rustfmt kvm-unit-test nasmtests nasmtests-force-jit expect-tests jitpagingtests qemutests rust-test tests
See tests/Readme.md for more information.
Using v86 for your own purposes is as easy as:
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,
});See v86.d.ts for TypeScript definitions. You can use make doc (TypeDoc) or make denodoc (Deno) to generate HTML documentation in ./docs/api/.
At this time, v86 does not accept pull requests or issues written partially or entirely by generative AI tools. Exceptions may be made on a case-by-case basis.
v86 is distributed under the terms of the Simplified BSD License, see LICENSE. The following third-party dependencies are included in the repository under their own licenses:
Shoot me an email to copy@copy.sh. Please report bugs on GitHub.
| Back | FazBrowse Home | New Git URL |