MacVisor GA

Bring VMs from other apps

Moving from UTM, Parallels Desktop, VMware Fusion, VirtualBuddy or tart. What comes across today, what doesn't, and how.

MacVisor doesn't import other apps' VMs as they are: their settings, snapshots and saved sessions stay behind. What you can bring is the disk of a Linux VM, and your files from any VM. macOS and Windows VMs are made again in MacVisor.

FromLinux VMsmacOS VMsWindows VMs
UTMThe disk: a .qcow2 (QEMU) or .img (Apple Virtualization)Made againMade again
Parallels DesktopThe disk, converted from Parallels' formatMade againMade again
VMware FusionThe disk, converted from VMDKMade againMade again
VirtualBuddyThe disk (Disk.img)Made again
tartThe disk (disk.img)Made again

Only ARM64 guests can come across. MacVisor doesn't emulate x86, so a VM from an Intel Mac, or one UTM emulates, won't boot.

Linux VMs: bring the disk

MacVisor makes a VM from a disk image file in qcow2 or raw format. It copies the disk into a template and makes the VM a linked clone of it, so the original file is left as it was.

  1. In the other app, shut the VM down, not suspended, and delete or merge its snapshots, so that the disk file holds the current state.

  2. Find the disk. In Finder, right-click the VM's file and choose Show Package Contents. The disk is the largest file: a .qcow2 or .img in UTM's Data folder, a .hds inside the .hdd folder for Parallels, .vmdk for VMware Fusion, Disk.img for VirtualBuddy, and ~/.tart/vms/<name>/disk.img for tart.

  3. Convert a disk MacVisor can't read. qcow2 and raw disks need nothing. Convert VMDK, Parallels' .hds and other formats to qcow2 with qemu-img, from Homebrew's qemu:

    brew install qemu
    qemu-img convert -p -O qcow2 "Ubuntu.vmwarevm/Virtual Disk.vmdk" ~/Downloads/ubuntu.qcow2
  4. Make the VM. --no-cloud-init boots the disk as it is, with its own accounts, passwords and software:

    mvz create ~/Downloads/ubuntu.qcow2 ubuntu --no-cloud-init --memory 8
    mvz start ubuntu

    In the app, add the file with the + in the Templates section, then make a VM from it with Set up with cloud-init off.

MacVisor treats a VM made this way as an appliance: it sets nothing up inside it, mvz shell and exec refuse it, and Shut Down presses the virtual power button. Use the VM's window, or SSH to its address as you did before: ssh <user>@ubuntu.mvz.

If the guest runs cloud-init, as most VMs made from a distribution's cloud image do, leave out --no-cloud-init instead. cloud-init then adds your Mac account with your SSH keys and installs the MacVisor Agent at the first boot, so mvz shell, port forwarding and the other guest tools work. If mvz wait never finishes, the guest's cloud-init is off or missing: delete the VM and make it again with --no-cloud-init.

What to check in the guest:

  • It must boot with UEFI, from an EFI system partition. VMs from Parallels, VMware Fusion and UTM's QEMU backend do. A UTM VM that boots a separate kernel and initrd doesn't.
  • The disks and network adapter change. Disks appear as /dev/vda (Virtio), and the network adapter gets a new name and a new MAC address, so the VM gets a new address. An /etc/fstab that names disks by device, such as /dev/sda1, or a network configuration that names the old adapter, needs editing: use UUIDs and DHCP before you move, or fix it from the VM's window.
  • Other apps' guest tools (Parallels Tools, VMware Tools, SPICE) no longer have anything to talk to. Remove them when convenient.

macOS VMs: make a new one

A macOS VM depends on more than its disk: the auxiliary storage and the identity the Virtualization framework gave it. MacVisor can't import those from another app, so make a new macOS VM and bring your files across.

  1. Create the VM in MacVisor: mvz create macos-27 mac --ssh, or ⌘N in the app. See Create VMs and templates.
  2. Copy your files through a folder on the Mac: share it with the old VM in the other app, copy your files into it, then share the same folder with the new VM in VM Settings → Shared Folders.

Windows VMs: make a new one

MacVisor installs Windows its own way, with drivers for its own virtual hardware, so a Windows disk from another app doesn't boot in it. Create a Windows VM from Microsoft's ISO, which takes about 10 minutes, then copy your files over its Z: drive, a shared folder on the Mac. Activate the new Windows with your license. See Windows 11 guests.

Files from an old disk

To copy files out of an old Linux VM's disk without booting it, attach a raw copy of the disk to a MacVisor Linux VM as a second disk: VM Settings → Storage → Disk Images. It attaches read-only by default. Mount it in the guest and copy what you need. Convert a qcow2 or VMDK disk to raw first with qemu-img convert -O raw.