Virtualizing macOS on the M1 MacBook Pro

My machine has arrived so I’ve been digging into the topic, trying to figure out how to get Big Sur running in Parallels. As others have found, you can’t. But I was really curious why, which is what this is all about.

If you’ve created a Monterey VM in Parallels 17, you’ll notice you have exactly zero config options. You can do snapshots, there’s no shared folders, no nothing. The vm even has a different extension and files inside the bundle. This is because Parallels is just wrapping Apple’s VZVirtualMachine class. I imagine this is a stopgap while they get their own virtualization going.

You can see a lot of what’s going on my looking at the MacVM open source project. You can download the 11.6 IPSW from Apple and attempt to get it running with this project, but clicking the “Install” button does nothing. A look in the logs reveals that VZMacOSRestoreImage.mostFeaturefulSupportedConfiguration is returning null. This is because the 2021 MacBook Pro ships with Monterey, and Apple machines refuse to run systems older than they shipped with. I imagine if you were to try this on an older M1 machine that shipped with Big Sur, this would probably work.

If I’m correct, you could use this project on an older M1 Mac to create a Big Sur VM, duplicate the one created in Parallels, and copy the disk.img from this bundle to Parallel’s vm bundle, and it’d work.

Apple’s virtualization leaves a lot to be desired, though it performs very well. Looking at this MacVM project, it might even be possible to virtualize macOS inside a Xojo Mac app.

2 Likes

In VMware you can change machine identifier. Not from the UI but from by editing the VM settings file.

Like this machine thinks its a Mac Book Pro but obviously no Mac Book pro with Xeon CPU’s exists. This was done by editing the VM file.

image

Maybe you can do something like that.

1 Like

Oh yes, I am all too familiar with that. But no such thing is available for Apple’s virtualization. I’ve looked at the first, including in a hex editor. Curiously, the aux.img is 3MB of zeros with just a couple non-zero bytes at the beginning. The others aren’t very useful either.

That was asked in issue 6 and it fails with:

2021-10-26 11:39:11.149750+0200 MacVM[5671:17748] Error: Error Domain=VZErrorDomain Code=1 “Installation failed.” UserInfo={NSLocalizedFailure=Internal Virtualization error., NSLocalizedFailureReason=Installation failed., NSUnderlyingError=0x6000030d6250 {Error Domain=VZErrorDomain Code=1 “(null)”}}

Another comment claims:

So this VM solution is literally only “Monterey or newer, running on a Monterey or newer host”.

I thought I was a dying breed because I still do that too, lol!

Tsck… That’s disappointing, but maybe it means Apple can’t wait to forget about Big Sur, like many people!

Oh no, HexFiend is part of my standard toolkit.

1 Like

Me three…

1 Like
Forum for Xojo Programming Language and IDE. Copyright © 2021 Xojo, Inc.