12 Punkte von GN⁺ 2023-12-31 | 2 Kommentare | Auf WhatsApp teilen

Warum sind Apple-Silicon-VMs so anders?

  • Das Ausführen von macOS-virtuellen Maschinen (VMs) auf Apple-Silicon-Macs wirkt vielleicht nicht besonders populär, ist für Apple aber seit Langem eines der wichtigen Ziele.
  • Wer auf einem Mac der M-Serie Virtualisierungssoftware verwendet, merkt schnell, wie stark sich das von der Virtualisierung von macOS und anderen Betriebssystemen auf Intel-Macs unterscheidet.
  • Der Text erklärt, warum Virtualisierung wichtig ist und wie es zu diesen grundlegenden Unterschieden kam.

Die drei Säulen von Apple Silicon

  • Auf der WWDC im Juni 2020 stellte Craig Federighi die drei Säulen von Apple Silicon vor: Universal Apps, die auf beiden Architekturen laufen, Rosetta 2, das Intel-Code in Arm-Instruktionen übersetzt, und Virtualisierung.
  • Noch bevor Apple das Developer Transition Kit veröffentlichte, demonstrierte Andreas Wendker eine Vorabversion von Parallels Desktop, die Linux als Gast ausführte, erwähnte jedoch Windows nicht.

Die Anfänge der Virtualisierung

  • In der Frühzeit der Virtualisierung unterschied man zwischen Typ-1-Hypervisoren, die direkt auf der Hardware laufen, und Typ 2 (hosted), bei denen zunächst das Hauptbetriebssystem auf der Hardware läuft und darauf der Hypervisor.
  • Auf Desktop-Computern sind Typ-2-Virtualisierungsprodukte wie VMware Fusion, Parallels Desktop und Oracle VirtualBox verbreiteter.

Hardware-Unterstützung und Virtualisierung

  • Mit Hardware-Unterstützung für Hypervisoren ist es einfacher, unveränderte Gastbetriebssysteme auszuführen.
  • Dafür können Intels VT-x-Funktionssatz oder die AArch64-Virtualisierung von Arm-CPUs genutzt werden.
  • Probleme bei der Geräteunterstützung können entweder im Virtualisierungs-Framework gelöst oder von der Virtualisierungssoftware selbst behandelt werden.

Das Besondere an Apple-Silicon-Chips

  • Sämtliche Hardware-Geräte in Apple-Silicon-Chips unterscheiden sich von ihren Gegenstücken in Intel-Macs.
  • Selbst wenn Apple alles für die externe Nutzung vollständig dokumentieren wollte, wäre der technische Aufwand für die Geräteunterstützung wie bei Intel-Macs für Dritte wohl zu teuer gewesen.
  • Deshalb war es nicht realistisch, einfach mit einem Hypervisor zu beginnen und darauf eine vollständige Virtualisierungssoftware aufzubauen, und es wäre zudem schwer gewesen, die hohe Leistung zu erreichen, die Apple und die Nutzer erwarten.

Virtio-Treiber und Virtualisierung

  • Apple entschied sich stattdessen dafür, Virtio-Treiber in macOS zu integrieren, also die Geräteunterstützung direkt einzubauen.
  • Virtio ist ein Standard, der eine Abstraktionsschicht für I/O-Geräte bereitstellt: Wenn ein Gastbetriebssystem eine Datei öffnen will, wird dies an einen para-virtualisierten Virtio-Frontend-Speichertreiber weitergegeben, der dann über einen Virtio-Backend-Treiber mit dem Speichergerät interagiert.
  • Eine Virtualisierungs-App zu erstellen bedeutet dann, die benötigten Virtio-Geräte zu konfigurieren und zu öffnen, damit Gast, Virtio und Host die Arbeit übernehmen.

Apples Entscheidung für Virtio

  • Apples Entscheidung für Virtio wurde auch dadurch beeinflusst, dass Linux bereits gute Virtio-Unterstützung hatte, während macOS damals noch keine bot.
  • Apple-Ingenieure bauten in den Jahren vor der Veröffentlichung von Monterey die Virtio-Unterstützung in macOS ein.
  • Die Virtio-Implementierung in macOS enthält Erweiterungen für Tastatur- und Zeigegeräte, eine gemeinsame Zwischenablage ("Spice") sowie Hochleistungsgrafik über Metal- und GPU-Unterstützung.

Vorteile des Virtio-Modells

  • Im Virtio-Modell stellt das Betriebssystem die Unterstützung bereit. Das senkt für Anbieter wie VMware und Parallels die Entwicklungskosten, verringert aber auch den kommerziellen Mehrwert ihrer Produkte.
  • Apple entscheidet auf Apple Silicon, welche Hardware und Funktionen von der Virtualisierung unterstützt werden.

Zukunft und Flexibilität der Virtualisierung

  • Wer ältere macOS-Versionen in einer VM ausführt, kann auch dann noch Intel-exklusive Apps nutzen, wenn Rosetta 2 im aktuellen macOS nicht mehr unterstützt wird.
  • Auf Apple-Silicon-Macs lässt sich Software ausführen, die nicht mit der minimal unterstützten macOS-Version kompatibel ist.
  • Mit Linux oder macOS können Entwickler leichtgewichtige VM-Pakete wie Docker bereitstellen.

Meinung von GN⁺

  • Die Virtualisierung auf Apple-Silicon-Macs verfolgt einen anderen Ansatz als die bisherige Intel-basierte Virtualisierung und wirkt wie Teil von Apples Strategie, die Integration von Hardware und Software weiter zu stärken.
  • Virtualisierung über Virtio bietet Entwicklern eine kosteneffiziente Lösung und ermöglicht unter Apples Kontrolle eine Performance-Optimierung.
  • Fortschritte bei der Virtualisierung könnten Nutzern von Apple-Silicon-Macs langfristig vielfältige Software-Umgebungen eröffnen und besonders nützlich sein, um ältere Anwendungen und Systeme zu unterstützen.

2 Kommentare

 
molla 2024-01-02

Der Teil über die Zukunft der Virtualisierung wirkt etwas merkwürdig.
Nur weil Virtualisierung möglich ist, bedeutet das nicht automatisch, dass bestehende Systeme kompatibel sind. Irgendwo muss letztlich der x86-Befehlssatz in ARM-Befehle übersetzt werden.
Wenn das nicht von der Hardware oder dem Betriebssystem (Rosetta?) unterstützt wird, bleibt am Ende nichts anderes übrig, als auf VM-Ebene zu emulieren — und in diesem Fall ist der Leistungsabfall sehr groß.
Auch jetzt kann man auf Apple-Silicon-Macs Linux für x86 installieren, aber die Leistung ist wahnsinnig langsam. (Ich glaube, letztes Jahr brauchte ich einmal ein x86-Binary, habe es dafür zum Bauen installiert und dann sofort wieder aufgegeben.)

 
GN⁺ 2023-12-31
Hacker-News-Kommentar
  • Windows hat viele Funktionen, die von Hyper-V abhängen. Wenn man es aktiviert, bootet Windows nicht direkt, sondern Hyper-V startet, und das primäre Windows-System läuft in einer privilegierten VM.
  • Jemand sucht nach Informationen zum aktuellen Stand der Virtualisierung von x86-64-Windows/Linux auf Apple Silicon und bedauert, dass der Artikel wichtige Anwendungsfälle dazu nicht erwähnt.
  • Es wird gehofft, dass alle OS-Nutzer sich in die isolierte VM ihres OS einloggen, damit Nutzer die Eigentümerschaft über ihren Apple-Computer behalten können.
  • macOS kann gleichzeitig nur zwei VMs ausführen; wer also einen Mac mini als Build-Server nutzen will, sollte das günstigste Modell kaufen.
  • Jemand wollte mit Parallels eine macOS-VM für die Entwicklung nutzen, ist aber dadurch eingeschränkt, dass keine Anmeldung mit der Apple-ID möglich ist.
  • Es besteht Verwirrung darüber, warum Docker auf der Linux/amd64-Plattform nahezu mit nativer Geschwindigkeit schnell läuft, während eine x86-UTM-VM deutlich langsamer ist.
  • Es gibt eine Frage zum Fortschritt der virtio-Schicht für Windows, wer daran arbeitet und ob sie in naher Zukunft funktionsfähig sein könnte.
  • Es wird ein von Rusty Russell geschriebener Treiber erwähnt; er teilt tiefe Einblicke in die Softwareentwicklung, weshalb empfohlen wird, ihm auf Twitter zu folgen.
  • Es gibt Zweifel, ob alle kommerziellen Desktop-VMs (VMWare Fusion/Parallels/UTM/Vimy) inzwischen das virtio-Modell verwenden und ob ARM64-Windows theoretisch überall ähnlich laufen sollte.
  • Jemand hat etwa ein Jahr lang versucht herauszufinden, wie man auf einem M2-Apple-Silicon-Chip mit einem einzigen Befehl eine Qemu-VM erstellt, hat aber Schwierigkeiten, obwohl Alpine Linux + Sway WM unter macOS oder AsahiLinux in Qemu auf x86-64 vergleichsweise einfach läuft.