Skip to content
Tech News
← Back to articles

Apple Silicon and Virtual Machines: Beating the 2 VM Limit (2023)

read original get Parallels Desktop for Mac → more articles
Why This Matters

This article highlights the limitations imposed by Apple Silicon on running more than two macOS virtual machines simultaneously, a restriction rooted in Apple's licensing and technical framework. Understanding these constraints is crucial for developers, hobbyists, and enterprises seeking to optimize virtualization on Apple hardware, especially as virtualization becomes more integral to software testing and development. The insights also shed light on potential avenues for overcoming these barriers within the bounds of Apple's policies.

Key Takeaways

For those who’ve been wondering what I’ve been doing for these past few months outside of OpenCore Legacy Patcher, I got the amazing opportunity to work as a Mac Admin Intern at a local consultant company.

One of the areas I’ve been working quite a bit with is macOS Virtual Machines, specifically Apple Silicon Virtual Machines based on Apple’s Virtualization framework. However, not long after doing a lot of development and testing using Apple’s VM stack (through the amazing project, UTM), I found a very frustrating limitation: Apple Silicon hosts can only have a maximum of 2 macOS guest VMs active at once.

This is most commonly seen with this error, generated by Virtualization.framework :

The number of virtual machines exceeds the limit. The maximum supported number of active virtual machines has been reached.

The main reason for this error comes from macOS’ SLA, section 2.B.iii:

(iii) to install, use and run up to two (2) additional copies or instances of the Apple Software, or any prior macOS or OS X operating system software or subsequent release of the Apple Software, within virtual operating system environments on each Apple-branded computer you own or control that is already running the Apple Software, for purposes of: (a) software development; (b) testing during software development; (c) using macOS Server; or (d) personal, non-commercial use.

While I cannot officially virtualize more than 2 copies of macOS on a single machine at once for work, I was still interested in figuring out where in macOS Apple embeds these checks and whether hobbyists and researchers could enable support for more than 2 active macOS VMs at once.

macOS Internals Deep Dive

To start, I initially thought this limitation was userspace based and as such would be embedded somewhere within /System/Library/Frameworks/Virtualization.framework . Due to macOS Big Sur’s dyld merger of frameworks, we’ll need to either extract the framework manually or use tooling such as Hopper Disassembler to load specific binaries embedded in the dyld shared cache.

More information on macOS Frameworks and the dyld shared cache: Battle against on-disk binaries

... continue reading