UTM - Virtuelle Maschinen für iOS und macOS
(github.com/utmapp)- UTM ist ein Systememulator und Host für virtuelle Maschinen, der auf iOS und macOS läuft und auf QEMU basiert. Damit lassen sich Windows, Linux und mehr auf Mac, iPhone und iPad ausführen.
- Mit vollständiger Systememulation auf Basis von QEMU werden MMU und Geräte abgebildet; unterstützt werden mehr als 30 Prozessoren, darunter x86_64, ARM64 und RISC-V.
- Der VGA-Grafikmodus verwendet SPICE und QXL; unterstützt werden außerdem Textterminal-Modus, USB-Geräte und JIT-Beschleunigung auf Basis von QEMU TCG.
- Als Frontend für macOS 11 und iOS 11+ können auf dem Gerät VMs erstellt, verwaltet und ausgeführt werden.
- Unter macOS wird hardwarebeschleunigte Virtualisierung mit Hypervisor.framework und QEMU unterstützt; unter macOS 12+ können mit Virtualization.framework macOS-Gäste gebootet werden.
- UTM SE ist die „slow edition“, die sich unter iOS wie eine normale App ohne Jailbreak oder JIT-Umgehung sideloaden lässt, und verwendet einen threaded interpreter, der schneller als ein traditioneller Interpreter, aber langsamer als JIT ist.
- UTM/QEMU benötigt für maximale Leistung dynamische Codegenerierung (JIT), und auf iOS-Geräten erfordert JIT einen Jailbreak oder spezielle Umgehungsmethoden für bestimmte iOS-Versionen.
- UTM SE enthält zur Optimierung von Größe und Build-Zeit nur die Architekturen ARM, PPC, RISC-V und x86, jeweils in 32-Bit- und 64-Bit-Varianten.
- Installationshinweise für UTM und UTM SE unter iOS gibt es unter https://getutm.app/install/ , UTM für macOS gibt es unter https://mac.getutm.app/.
- Die Distribution erfolgt unter der Apache-2.0-Lizenz, verwendet aber verschiedene (L)GPL-Komponenten; bei einer Weiterverbreitung ist zu beachten, dass gstreamer-Plugins statisch gelinkt sind und Teile des Codes aus qemu übernommen wurden.
1 Kommentare
Meinungen auf Hacker News
Vor ein paar Wochen habe ich versucht, auf einem neuen M2 mit macOS Ventura Windows 11 ARM mit UTM zu installieren, um Fusion zu ersetzen, und war enttäuscht.
Integrationswerkzeuge wie Kopieren/Einfügen oder File Sharing zwischen virtueller Maschine und Host funktionierten nicht, und die Grafik war ständig fehlerhaft und wechselte häufig zu einem grauen Bildschirm.
Es schien keine Möglichkeit zur Wiederherstellung zu geben, sodass ich die virtuelle Maschine hart neu starten musste, und die Treiber/Hilfswerkzeuge waren ebenfalls auf 2012 datiert.
Da es ein kostenloses Produkt ist, hat man keinen Anspruch auf Erwartungen, und ich bin tatsächlich zu Fusion zurückgekehrt. Aber aus der Perspektive von jemandem, der gehofft hatte, eine kommerzielle Virtualisierungslösung durch Open Source zu ersetzen, ist es dafür meiner Meinung nach noch schwierig.
https://docs.getutm.app/guest-support/windows/#windows-xp-an...
Grafikfehler habe ich auch noch nicht gesehen, aber ich versuche nicht zu spielen und nutze nur einfache Desktop-Apps.
Korrektur: Fusion 2023 Tech Preview [1] installiert die vollständigen VMware Tools und unterstützt Kopieren/Einfügen.
UTM ist hervorragend, und wenn eine Snapshot-Funktion hinzukommt [1], würde ich es wohl zur Standardempfehlung machen. Bis dahin werde ich weiter Parallels nutzen.
Zur Info: Es gibt einen inoffiziellen Snapshot-Manager [2].
1: https://github.com/utmapp/UTM/issues/5484
2: https://github.com/Metamogul/UTM-Snapshot-Manager
Das häufigste Problem war, dass der Shared Folder in der Gast-VM plötzlich verschwand und ich häufig Workarounds nutzen musste, um ihn zurückzubringen.
Danach hatte VMware Fusion dasselbe Problem, und Parallels wirkte zu teuer, also bin ich zu Lima gewechselt.
Ich bin froh, Lima entdeckt zu haben. Es basiert ebenfalls auf QEMU, macht das Starten von Linux-VMs einfach und bringt Network Sharing standardmäßig mit.
Jetzt erledige ich die gesamte Entwicklung in Lima-VMs und hatte keine Probleme. Falls nötig, könnte ich wohl auch Bildschirmausgabe weiterleiten, aber dank VSCode reicht mir derzeit eine Headless-Instanz.
Es könnte so einfach sein wie
cp -c.Allerdings denke ich auch: Wenn es wirklich so wäre, wäre es wohl schon implementiert.
clonefileerfolgreich eine eingeschränkte Form von Snapshots nachgebildet habe, aber die laufende Implementierung verwendet offenbar genau diesen Ansatz.Das größte Problem von UTM ist, dass es bei manchen Leuten sehr gut funktioniert und bei anderen furchtbar.
Wenn man sich die Threads auf dieser Seite von oben bis unten ansieht, gibt es gleichzeitig viele Aussagen wie „Ich würde UTM gern nutzen, aber es funktioniert nicht oder ist unbrauchbar langsam“ und Antworten wie „Komisch, bei mir läuft es“.
In meinem Fall hat UTM buchstäblich kein einziges Mal richtig funktioniert. Ich habe versucht, auf einem M1-Mac von 2021 eine standardmäßige Ubuntu-ARM-Installation nach der Anleitung unter https://docs.getutm.app/guides/ubuntu/ durchzuführen, aber es ist fehlgeschlagen, und jetzt sehe ich nur einen schwarzen Bildschirm mit blinkendem Cursor.
Leider können die Leute, bei denen es funktioniert, denen, bei denen es nicht funktioniert, kaum echte technische Unterstützung geben.
Ich habe im Mac App Store sogar 10 Dollar für UTM bezahlt, aber der einzige Support-Kanal ist Discord, und dort gab es viele Reaktionen wie „lol, bei mir geht’s, Skill Issue“.
Als Empfehlung: UTM ist einen Versuch wert. Wenn es dir gefällt, kannst du viel Geld sparen; wenn es wie bei mir überhaupt nicht funktioniert, musst du am Ende Parallels für 100 Dollar pro Jahr bezahlen. Parallels wird wahrscheinlich einfach funktionieren.
Wenn Parallels nicht funktioniert, kannst du direkt mit einem Unternehmen sprechen, das einen Anreiz hat, dich zur Verlängerung der Lizenz zu bewegen, und motiviert ist, dir zum Erfolg zu verhelfen.
Wenn man die Boot-VM-Disk über eine bestimmte Größe hinaus festlegt — ich glaube, es war nicht einmal sehr groß, etwa 30 GB bis 100 GB —, wird der Start der VM sehr langsam.
Wenn man sie groß genug anlegt, bootet sie überhaupt nicht. Das Hinzufügen eines zweiten Laufwerks beliebiger Größe löst diesen Bug nicht aus.
Ich habe von der Firma ein M1 MacBook Pro bekommen, entwickle aber alles unter Linux. Seit Ende der 90er war Linux meine bevorzugte Umgebung.
Die Hardware des MacBook Pro ist gut, aber macOS wirkt träge und einengend, wodurch meine Produktivität deutlich sinkt.
Deshalb lasse ich in UTM Fedora aarch64 im Vollbild laufen. Das funktioniert ziemlich gut, und ich vergesse oft, dass es auf einem Mac läuft.
Ich wünschte nur, macOS würde nicht dazwischenfunken und mich nicht gelegentlich aus dem Vollbildmodus werfen.
Ich habe mich angepasst, weil ich die verlässliche Akkulaufzeit nicht missen wollte.
Irgendwo gibt es vielleicht eine Lösung, die den Vollbildmodus beibehält.
Gelegentlich unterstützt ein Utility vertraute Kommandozeilenargumente nicht, aber das ist eher ein Versionsunterschied als ein Mac/Linux-Problem, und ich habe das auch schon mehrfach erlebt, wenn ich innerhalb der Firma auf andere Geräte gewechselt bin.
Der größte Ärger, auch wenn er nicht riesig ist, ist der Unterschied zwischen ARM und x86. Ab und zu stößt man auf Pakete, die auf ARM nicht unterstützt werden, aber das wird immer seltener.
UTM war in den letzten zwei Jahren für mich ein stabiler Hypervisor und hat in dieser Zeit auch mehrere gute Funktionsverbesserungen erhalten.
Was mir an UTM aber am besten gefällt, ist, dass es für Universal Turing Machine steht. Als Name für ein Virtualisierungsprodukt ist das meiner Meinung nach fast unschlagbar.
Was ich an Parallels und VMWare nicht mag, ist, dass sie die Integration zwischen Betriebssystemen zu stark forcieren. Zum Beispiel Windows-Fenster unter macOS zu öffnen oder macOS-Dokumente direkt in Windows zu öffnen.
Ich bevorzuge es, wenn eine virtuelle Maschine vom primären macOS isoliert ist. Deshalb muss ich mich immer durch die Einstellungen wühlen und herausfinden, was ich abschalten muss.
Ich weiß, dass in der GitHub-Projektbeschreibung „for iOS“ steht, halte das aber für eine ziemlich irreführende Formulierung.
Die Installationsoptionen für iOS bedeuten im Wesentlichen entweder Jailbreak, eine Methode, die auf aktuellen CPU-/iOS-Versionen nicht möglich ist, oder man muss die App in einem semi-tethered Zustand alle paar Tage erneut laden/signieren.
https://docs.getutm.app/installation/ios/#summary
Die App selbst muss man nicht neu installieren, nur das Signaturzertifikat erneuern.
Ich freue mich darauf, dass es deutlich einfacher wird, wenn Sideloading im EWR umgesetzt wird.
Apple hat erfolgreich Hardware gebaut, die an über eine Milliarde Menschen ausgeliefert werden kann, und obwohl viele davon durch Jailbreak etwas gewinnen würden, hat es niemand geschafft.
Es funktioniert zwar auch ohne diese Methode, ist aber von den drei Ausführungsarten die langsamste.
Wenn man auf dem Mac eine virtuelle Maschine für eine Entwicklungsumgebung betreibt, ist OrbStack das, was man will: https://orbstack.dev/
https://lima-vm.io/
https://github.com/abiosoft/colima
Mir wurde Lima empfohlen; es ist ein wenig wie WSL2 für macOS: https://lima-vm.io
Ich weiß nicht genau, was es intern verwendet, aber bei mir hat es sehr gut funktioniert.
colima ist eine Schicht auf Lima, die im Stil von docker-machine/boot2docker virtuelle Maschinen einfach einrichtet.
UTM ist für grundlegende Zwecke großartig, aber die Performance war so schlecht, dass es für den Alltagseinsatz als Hauptwerkzeug nicht wirklich realistisch war.
Auf dem Mac kommt nichts an Parallels heran, und es ist sein Geld absolut wert.
Wenn die virtuelle Maschine aarch64 ist, ist die Performance überraschend gut, und ich kann UTM sehr empfehlen.