Running Vitruvian under QEMU on a Linux host is the setup the project actually develops against, and it’s the fastest and most reliable way to try the system.

Start with QEMU + KVM

Install QEMU:

bash
sudo apt install qemu-system-x86 qemu-kvm

Check that hardware acceleration is available:

bash
kvm-ok

If kvm-ok reports KVM is unavailable, don’t panic: QEMU still runs, it’s just slower. On most machines the message is a matter of enabling virtualization in the firmware or freeing the hardware from another hypervisor.

Boot a raw image

bash
qemu-system-x86_64 \
  -cdrom vitruvian.img -boot menu=on \
  -m 4G -cpu host -smp sockets=1,cores=2,threads=2 --enable-kvm \
  -netdev user,id=mynet,hostfwd=tcp::2222-:22 \
  -device virtio-net-pci,netdev=mynet \
  -audiodev id=snd0,driver=pa -device ich9-intel-hda  \
  -device hda-output,audiodev=snd0

Adjust -m (guest RAM, 4G is plenty) and -smp (CPU layout) to what your host has to give. Drop --enable-kvm if you’re running without it.

Boot an ISO

bash
qemu-system-x86_64 \
  -cdrom vitruvian.iso -boot menu=on \
  -m 4G -cpu host -smp sockets=1,cores=2,threads=2 --enable-kvm \
  -netdev user,id=mynet,hostfwd=tcp::2222-:22 \
  -device virtio-net-pci,netdev=mynet \
  -audiodev id=snd0,driver=pa -device ich9-intel-hda  \
  -device hda-output,audiodev=snd0

SSH into the guest

The hostfwd=tcp::2222-:22 piece forwards the guest’s SSH port to port 2222 on your machine:

bash
ssh -p 2222 vitruvian@127.0.0.1

Useful flags

Flag Purpose
-display gtk GTK window instead of the default SDL one
-display spice-app SPICE, for better clipboard and display integration
-cpu host Expose host CPU features to the guest
-snapshot Run without writing changes back to the image
-serial stdio Print serial output to the terminal, handy for capturing boot logs
V\OS Docs