VirtualBuddy: Virtualize macOS 12 and later on Apple Silicon
github.com
github.com
Of course it's possible in software in principle but obviously that would be awful.
The Hackintosh community emulated SSE2/3 to allow OS X to run on CPUs that didn't have those extensions, and AFAIK it worked reasonably well:
http://www.tutilapia.com/2011/11/a-little-about-hackintosh-i...
Also important here is the bespoke ASIC functionality on their CPUs - as it's a system on chip, you'll likely need to emulate the full SoC, including all the peripherals the system expects to be there. Unlike x86_64, ARM isn't really designed to do device discovery on extensible buses in the same way. Your peripherals should all be in the same place, many being on the chip on internal interconnects.
Emulating anything would be possible with enough effort. But you'd likely need to emulate a whole host of extra bespoke silicon functionality on the SoC to get it working. For example, given every ARM Mac has a hardware neural engine, you might find unmodified Mac OS assumes it's there and usable for core functionality (or does so in future). It would probably be a lot of work to emulate all of the extra SoC stuff to the point you could boot the OS unmodified. But nothing is impossible - I think iOS has been run in third party emulators etc.
I think we've been somewhat spoilt by x86 and how easy loads of different machines will boot the same OS image. It's really really different in ARM land.
The rest of what you said is right, though.
[1] https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi...
macOS VMs eschew most apple extensions anyway (no AMX there for example).
The big roadblock that we've hit is that arm64 macOS has no software rasteriser for rendering the GUI. The result is that unless you implement Metal and the paravirtualised GPU infrastructure, you're stuck in console mode.
And this has been just as much of an issue for virtualizing x86 macOS… although it does have a software rasterizer, it's almost unusably slow. The only way you're going to get decent performance with that is with passthrough of a GPU that macOS has drivers for (which for modern GPUs, means some Radeon 500 series, Radeon 5000/6000 series, or Intel iGPU up through Coffee Lake).
Since the early 2000s, real Macs have practically never been configured in such a way that there's no usable GPU, and so the software rasterizer never got any attention since it's an absolute-last-resort fallback. With ARM Macs, all models have some form of usable GPU available (presumably, even the forthcoming M-series cheesegrater tower will have a few GPU cores in its SoC) and they don't care to support virtualization on anything but macOS so they dropped the rasterizer entirely.
Some interesting discussions on HN from when the M1 first came out:
So there is this: https://blogs.blackberry.com/en/2021/05/strong-arming-with-m...
And there is also work around getting iOS to boot, which could pave the way for future work. https://github.com/sickcodes/Docker-eyeOS
Except, of course, this tool also adds a GUI and easy configuration options.
[1]: https://github.com/insidegui/VirtualBuddy/blob/main/VirtualC...
"Create macOS or Linux virtual machines"
This was in a Ventura beta 2 VM run with Apple's virtualization sample project: https://developer.apple.com/documentation/virtualization/run...
Other Tools like multipass kind and minikube on the guest will not work
Edit: many people download the default parallels; you need to download the parallels from this page https://www.parallels.com/blogs/parallels-desktop-apple-sili... to be able to have access to M1 virtualization.
You can't sign into icloud and you can't maximize a VM to 4k resolutions. It's usable, but for $100 they could do much much better.
The only way to make it usable in other operating systems was to disable GPU power management under Windows, which turned it into an oven, or to run Nouveau drivers under Linux which had serious performance problems, graphical artifacting, etc. The Nvidia drivers bundled with macOS had no such problems, running it at full performance with proper power management and no lockups.
Really? You’ve gotta be trolling, right?
WARNING: This project is experimental. Things might break or not work as expected.
Comparing the code between the two, VirtualBuddy seems like the better option to me (albeit not by a lot though). They are both lightweight wrappers around MacOS’s built in hypervisor, so I’m really not sure what you’re going on.