Tuesday, August 23, 2022

Apple Silicon Virtualization Apps

Howard Oakley:

There are currently three major apps to run macOS as a guest on an Apple silicon Mac with Monterey 12.5 as a host:

There’s also my free app Viable now in beta 3.

[…]

All four of these apps currently use Apple’s Virtualization framework to download, install and run macOS guests, thus have almost identical core features and shortcomings. The one notable exception to this is VirtualBuddy, which apparently uses an undocumented method of booting a Monterey guest into Recovery mode. That’s essential if you want to downgrade or disable Secure Boot, for example if you want to turn SIP off in your VM.

[…]

None of the apps supports Apple ID connections, which is a serious problem for making the transition to Ventura: this means that a Monterey VM can’t run App Store apps at all, except for Apple’s free apps, such as Numbers.

[…]

By far the most economical solution is to create a new volume on which to keep your VMs; when that’s added to Time Machine’s exclusion list, then snapshots won’t be made of that volume either.

My main interest in virtualization is for running old or beta versions of macOS for testing. Lately, I’ve been doing this without virtualization, just using separate partitions and external SSDs on a separate Mac. However, I only bring one Mac with me when I travel, and I don’t trust installing a beta version on the internal SSD. For a while, I used an external SSD. This was kind of a pain because I couldn’t set it up using my secondary Intel Mac. It would only boot my M1 Mac if I ran the installer and each update from the M1 Mac itself—taking it out of commission for hours. With the Ventura beta, I was unable to get the beta to even install on the external SSD (neither the full installer nor updating from the Monterey beta). So, I’ve not set it up yet, but using virtualization seems like a more promising option.

Previously:

9 Comments RSS · Twitter

The main feature I make use of with macOS running as a guest is snapshots, and so far it appears none of the VM solutions for Apple Silicon support that. Since one of the main tasks I need to do is install and test the software in a completely clean, "fresh" install of macOS, the ability to roll back a system to a prior state is a must. Hopefully that'll come along at some point. In the meantime I'm doing most of my testing on Intel macs that still allow that, and then doing laborious testing on Apple Silicon last where I have to wipe and reinstall everything, just to make sure things are still working there like they are on Intel macOS.

@Bri

When you store your VM data on an APFS volume, then you can simply duplicate that VM, which will initially not use any extra space due to APFS's Copy-on-write feature. You can then test your VM and delete the copy in the end, and then start over again.

Or is there a reason why this doesn't work for your needs? I believe one of the VM (UTM or VB) suggests to do exactly that.

As for booting a Monterey guest into Recovery mode in UTM, there is a clever workaround, so it’s possible.

See here:

https://github.com/utmapp/UTM/issues/3904#issuecomment-1100924393

1. Create a new drive and start the guest VM.
2. Just after you log in, you'll be warned that "the disk you attached is not readable by this computer". Choose to initialize it, then choose "Erase". As best I can tell, it doesn't matter which format you choose.
3. Shut down the guest, then "Move Up" the new drive (so that it's the first in the boot order).
4. Restart the guest VM. It will fail to boot.
5. Close the guest VM's window, which will kill the VM.
6. Restore the original boot order (and possibly delete the drive you created in step 1), then restart the guest VM.
7. As it starts up, you'll be told that "authentication is required to verify startup disk", and prompted for a password.
8. Choose "Cancel", then choose "Startup Disk".
9. Quit "Startup Disk". You'll end up in the Recovery utility!

@Bri
@Thomas Tempelmann

UTM has “Clone” menu command for a VM and it’s instant on APFS. I clone a previously configured fresh VM, test stuff, then delete the clone. Not perfect, but it acts as a snapshot of a clean VM.

Caveat when cloning a VM: You must not run two clones at the same time, as it may lead to corruption.

Details are explained by Howard: https://eclecticlight.co/2022/08/24/virtualisation-on-apple-silicon-macs-11-machine-identities/

@Bri — check out Tart (https://github.com/cirruslabs/tart). I’ve been using it exactly how you describe for running tests and it has a “base image” concept that makes it easy to rollback to a known point.

I am unable to install macOS 13 Ventura virtualized on M1 running macOS 12 (German localization).

Didn‘t work with UTM or Parallels. Got the dialogue „A software update is required to install macOS in a virtual machine.“

Unsure if I‘m holding it wrong or virtualization host must be mac 13 for an macOS 13 guest.

@ Tom: make a VM with 12, then update to 13 using Software Update (after having installed the beta profile).

@Sören: Thank you!

Leave a Comment