x86 virtualization in JavaScript, running in your browser and NodeJS (mirror)
Fabian c8540d1113 Remove get_regs_short in non-debug mode | 2 years ago | |
---|---|---|
.cargo | 4 years ago | |
.github | 2 years ago | |
bios | 3 years ago | |
docs | 2 years ago | |
examples | 2 years ago | |
gen | 2 years ago | |
lib | 2 years ago | |
src | 2 years ago | |
tests | 2 years ago | |
tools | 2 years ago | |
.editorconfig | 6 years ago | |
.gitattributes | 3 years ago | |
.gitignore | 3 years ago | |
.jshint.json | 3 years ago | |
.rustfmt.toml | 3 years ago | |
Cargo.toml | 3 years ago | |
LICENSE | 3 years ago | |
Makefile | 2 years ago | |
Readme.md | 2 years ago | |
debug.html | 2 years ago | |
index.html | 2 years ago | |
v86.css | 3 years ago |
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:
Arch Linux — Damn Small Linux — Buildroot Linux — ReactOS — Windows 2000 — Windows 98 — Windows 95 — Windows 1.01 — MS-DOS — FreeDOS — FreeBSD — OpenBSD — 9front — Haiku — Oberon — KolibriOS — QNX
Here's an overview of the operating systems supported in v86:
boot>
prompt type
boot -c
, then at the UKC>
prompt disable mpbios
and exit
.You can get some infos on the disk images here: https://github.com/copy/images.
You need:
debug.html
)See tools/docker/test-image/Dockerfile for a full setup on Debian or WSL.
make
to build the debug build (at debug.html
).make all
to build the optimized build (at index.html
).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.tools/docker/exec
to find Dockerfile required for this.docker build -f tools/docker/exec/Dockerfile -t v86:alpine-3.14 .
from the root directory to generate docker image.docker run -it -p 8000:8000 v86:alpine-3.14
to start the server.localhost:8000
for hosted server.The disk images for testing are not included in this repository. You can download them directly from the website using:
wget -P images/ https://k.copy.sh/{linux.iso,linux4.iso,buildroot-bzimage.bin,openbsd-floppy.img,kolibri.img,windows101.img,os8.img,freedos722.img}
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 infos.
Using v86 for your own purposes is as easy as:
var emulator = new V86Starter({
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 starter.js.
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.
Fabian Hemmer (https://copy.sh/, copy@copy.sh
)