Skip to content
M5DevsPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

18 Commits

Folders and files

Repository files navigation

VAPlayer

VAPlayer is an x86_64 system emulator for Android virtualisation, built on a pruned QEMU source tree.

Layout

  • core/ — trimmed QEMU tree (upstream qemu.git) used to build the vaplayer-core binary.
  • ui/ — Qt 6 desktop front-end that drives vaplayer-core over QMP. The sidebar exposes V-Flash (inspect / flash an image) and ROM Manager (download, prepare, and inject the ARM bridge). See ui/README.md.
  • tools/ — provisioning tools: fetch and unpack a base Android image, inject ARM translation, and flash images offline. See tools/README.md.
  • COPYING, COPYING.LIB — GPLv3 / LGPLv2 licenses inherited from QEMU.

Pruning

The core/ tree is reduced to what x86_64 system emulation needs:

  • Only the x86_64-softmmu target (target/i386) is kept.
  • Legacy guest architectures (arm, mips, riscv, ppc, sparc, s390x, hppa, loongarch, hexagon, ...) and their devices are removed.
  • docs/ and tests/ are removed; unused subprojects and legacy devices (floppy, IDE, SCSI, legacy NICs) are pruned.
  • Firmware blobs in pc-bios/ are limited to the x86_64 set.

VirtIO drivers retained: virtio-gpu, virtio-blk, virtio-net, virtio-snd, virtio-input, virtio-9p.

VirtFS (9p) is enabled so the host-to-guest shared folder works. The core advertises virtio-9p-pci only when it is built with --enable-virtfs; the UI checks for the device before adding the shared folder to the command line.

Building

cd core
mkdir -p build && cd build
../configure --target-list=x86_64-softmmu \
    --enable-virtfs \
    --disable-docs --disable-guest-agent --disable-tools \
    --disable-sdl --disable-gtk --disable-vnc --disable-opengl \
    --disable-spice --disable-curl --disable-libssh --disable-usb-redir \
    --disable-libusb --disable-brlapi --disable-curses --disable-capstone \
    --disable-numa --disable-replication
ninja

The result is build/vaplayer-core. Hardware acceleration is provided by WHPX (Windows), KVM (Linux) and HVF (macOS), with TCG as the portable fallback.

Running the core outside the build tree

The core loads its firmware at runtime, resolving it as a relocated QEMU does: it looks under <dir-of-binary>/qemu-bundle/<prefix>/share/qemu. A binary copied away from that layout exits at startup with

qemu: could not load PC BIOS 'bios-256k.bin'

build/qemu-bundle/ already has the right shape, but its entries are symlinks into the source tree. To move the core somewhere else, copy the firmware rather than the symlinks:

dest=/path/to/install/bin
mkdir -p "$dest/qemu-bundle/usr/local/share"
install -m 0755 core/build/vaplayer-core "$dest/"
cp -r core/pc-bios "$dest/qemu-bundle/usr/local/share/qemu"

The release archive and the CI artifact are laid out this way already. .github/scripts/stage-core.sh performs the same copy, and .github/scripts/smoke-core.sh boots a staged core to confirm it can start a machine.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages