Virtualisierung: M4-Macs scheitern an älteren macOS-Versionen
Apple
bietet ein Virtualisierungsframework an, mit welchem Entwickler recht einfach Gastbetriebssysteme auf Macs ausführen können. Der Vorteil von Virtualisierungslösungen im Vergleich zu einer Emulation ist, dass die Systemresourcen oftmals ohne Zwischenebenen genutzt werden können, was zu einer hohen Ausführungsgeschwindigkeit führt. Der Nachteil ist, dass einige Spezifikationen des ausführenden Computers und des Gastbetriebssystems übereinstimmen müssen.
Mit der Einführung der M4-Macs kommt es zu einem merkwürdigen Fehler bei der Nutzung von Virtualisierungslösungen mit macOS-Gastbetriebssystemen: Während macOS 13.4 Ventura sich normal auf M4-Macs als Gast starten lässt, scheitern alle früheren Versionen sehr früh im Startprozess, wie
EclecticLight herausfand.
Fehler unklarLeider ist es zum aktuellen Zeitpunkt vollständig unklar, was diese Fehler auslöst. Da der Bug sehr früh im Startprozess des Gastsystems auftritt, sind noch keine Log-Ausgaben oder ähnliches vorhanden, welche Hinweise auf den Grund des Fehlers geben könnten. EclecticLight schreibt, dass wahrscheinlich nur Apple den Bug in den früheren macOS-Versionen beheben oder das Virtualisierungsframework anpassen könnte, um den Fehler auszumerzen.
Alles ab macOS 12 MontereyAuf Macs mit M1-, M2- oder M3-Chip lassen sich alle macOS-Versionen seit macOS 12 Monterey virtualisieren – doch erst mit macOS 12.4 funktioniert das halbwegs stabil. Eine Virtualisierung von macOS Big Sur, der ersten Version für ARM-basierte Macs, ist nicht möglich.
Auf dem Markt gibt es einige Lösungen, welche Apples Virtualisierungsframework nutzen, um das Starten von Gastbetriebssystemen zu ermöglichen. Auch EclecticLight selbst bietet mit der Freeware "
Viable" eine solche Virtualisierungs-App an. Ebenfalls beliebt ist
UTM, welches neben einer wirklichen Emulation via QEMU auch Apples Virtualisierungsframework unterstützt und somit macOS-Gastbetriebssysteme starten kann. Doch dadurch ist natürlich auch UTM von dem oben beschriebenen Fehler betroffen, welcher in diesem
Beitrag auf Github dokumentiert ist.