Running Vitruvian in a VM on macOS is close to the same experience as the Linux and Windows guides, because the project develops against QEMU on all three hosts. Two things differ: acceleration comes from Apple’s Hypervisor framework (HVF), and the image you pick depends on your chip.

What you need

Which image?

Check that HVF is available before you start:

bash
sysctl kern.hv_support

A value of 1 means the Hypervisor framework is ready. If you get 0, virtualization is unavailable (uncommon on real Macs; more common inside a nested VM) and you’ll fall back to emulation, detailed below.

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 -accel hvf \
  -netdev user,id=mynet,hostfwd=tcp::2222-:22 \
  -device virtio-net-pci,netdev=mynet \
  -audiodev id=snd0,driver=coreaudio -device ich9-intel-hda \
  -device hda-output,audiodev=snd0

On Apple Silicon, use qemu-system-aarch64 with the arm64 image instead:

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

Boot an ISO

Same setup, pointing at the ISO instead of a raw image:

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

Everything else from the Linux guide carries over unchanged, including the SSH port forward.

SSH into the guest

The hostfwd=tcp::2222-:22 line forwards the guest’s SSH port to localhost:2222. From a normal terminal:

bash
ssh -p 2222 vitruvian@127.0.0.1

Troubleshooting

Most issues at this stage are small command-line slips, and the error message in the terminal names the culprit.

V\OS Docs