v86 README

The project's README from github.com/copy/v86. As one markdown file: README.md.

Join the chat at https://gitter.im/copy/v86 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:

Demos

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

Documentation

How it works — Networking — Dial-up modem networking — Alpine Linux guest setup — Arch Linux guest setup — Debian with xfce 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

Compatibility

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.

How to build, run and embed?

You need:

See tools/docker/test-image/Dockerfile for a full setup on Debian or WSL.

Alternatively, to build using Docker

Running via Dev Container

Testing

The disk images for testing are not included in this repository. You can download them directly from the website using:

mkdir -p images && 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.

API examples

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/.

Generative AI

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.

License

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:

Credits

More questions?

Shoot me an email to [email protected]. Please report bugs on GitHub.

v86 (copy/v86)

Searching Database…

23.6K ·GitHub
Что это такое?v86 — это эмулятор x86-компьютера, который работает целиком в браузере. Он эмулирует процессор уровня Pentium 4 и классическое аппаратное обеспечение ПК, транслируя машинный код гостевой системы в WebAssembly на лету для приличной скорости.
Это что-то, что я устанавливаю как VirtualBox, или оно просто работает на веб-странице?Устанавливать ничего не нужно — всё работает на веб-странице. Можно попробовать размещённые демо, встроить эмулятор на свой сайт через libv86.js или подключить официальный npm-пакет для проектов с бандлером.
Как тогда добавить его в свой проект?Для проектов на Vite, React, Next или Webpack выполните 'npm install v86'. В остальных случаях возьмите libv86.js из раздела релизов и разберитесь с приложёнными примерами; сборка из исходников — это 'make' для отладочной версии или 'make all' для оптимизированной.
Насколько мощная эмулируемая машина?Процессор лишь примерно уровня Pentium 4 с полной поддержкой SSE3. Нет 64-битных расширений и нескольких ядер, поэтому 64-битные ядра не запустятся — придётся ограничиться 32-битными гостевыми системами.
Имеет ли значение, какая у меня ОС или браузер?Особо нет — всё работает на стороне клиента, так что подойдёт любой современный браузер. Если хотите размещать эмулятор у себя, в репозитории есть Dockerfile, и одна команда docker run запускает сервер.
Могу ли я встроить его на свой сайт без проблем с лицензией?Да — используется разрешительная лицензия Simplified BSD License (BSD-2-Clause). Лишь несколько сторонних компонентов в комплекте, например SoftFloat и zstd, сохраняют свои собственные лицензии.
Какие операционные системы на нём реально хорошо работают?Linux работает хорошо (только 32-битный), как и FreeDOS, MS-DOS, Windows от 1.01 до 2000, ReactOS, Haiku, KolibriOS, QNX и FreeBSD. Plan 9 и OS/2 не работают, а Windows XP и новее запускается лишь при определённых условиях.
Какое железо у эмулируемого компьютера?Классические комплектующие ПК: клавиатура и мышь PS/2, контроллеры флоппи- и IDE-дисков, VGA с расширениями SVGA и Bochs VBE, SoundBlaster 16, устройства virtio и даже dial-up модем, совместимый с Hayes.
Может ли эмулируемая машина выходить в интернет?Да — вы получаете сетевую карту NE2000 PCI плюс сеть через virtio, а в документации разобрана и обычная сеть, и подключение через dial-up модем. В одном из примеров даже объединяются в сеть два экземпляра эмулятора через Broadcast Channel API.
Можно ли сохранить работающую машину и вернуться к ней позже?Да — API позволяет сохранять и восстанавливать состояние эмулятора, а сжатие zstd держит образы сохранённого состояния небольшими.
What are similar projects?ra2, martypc, daedalOS, webvm, liteparse, frank-386, windows95, tfjs
Which topics is it in?jit, retro, cpu, x86, emulator, virtualization, hardware, wasm, bsd, browser, rust, npm
Creator
copy
Size
16.4 MB
Stars
23.6K
Updated
CommitOct 09
Age
12y
Commits · 90 Days