Implementierung der iPhone-11-Emulation in QEMU
(github.com/ChefKissInc)- QEMU emuliert softwarebasiert Maschinen und Userspace für verschiedene Architekturen
- Kürzlich wurde ein auf QEMU basierendes Emulationsprojekt für Apple Silicon und das iPhone 11 veröffentlicht
- QEMU bietet hohe Performance durch dynamische Übersetzung und unterstützt die Integration mit Hypervisoren wie KVM und Xen
- Es kann auf verschiedenen Systemen wie Linux, OS-X und Windows verwendet werden, und der Open-Source-Beitragsprozess ist gut etabliert
- Dokumentation und Community-Support sind sehr aktiv, während Bug-Tracking und das Einreichen von Patches effizient verwaltet werden
Vorstellung des Open-Source-Projekts QEMU und des Apple-Silicon-Emulationsprojekts
QEMU ist ein universeller Open-Source-Emulator für Maschinen und Userspace sowie ein Virtualisierungstool. Ein Projekt zur Emulation von Apple Silicon und dem iPhone 11 wird auf Basis von QEMU umgesetzt und bietet im Vergleich zu anderen Virtualisierungslösungen verschiedene Vorteile wie Skalierbarkeit, Community-Support und architekturübergreifende Kompatibilität.
Überblick über QEMU
- QEMU betreibt mit vollständiger Systememulation softwarebasiert verschiedene Maschinen auch ohne Hardwarevirtualisierung
- Es steigert die Emulationsleistung durch dynamische Übersetzung (dynamic translation)
- Durch die Integration mit Xen und KVM ist Hardware-Unterstützung auf Hypervisor-Ebene möglich
- Durch direkte CPU-Emulation sind Portabilität und Tests von Betriebssystemen zwischen Geräten möglich (z. B. ARMv7 → x86_64-Umgebung)
- Mit Userspace-API-Virtualisierung lassen sich Binärdateien direkt zwischen heterogenen Architekturumgebungen ausführen
Wichtige Einsatzgebiete und Merkmale
- Nutzer können detaillierte Einstellungen und das Laufzeitverhalten direkt über Kommandozeilenoptionen steuern
- Es wird auch zur Integration mit hochrangigen Open-Source-Management-Layern wie oVirt, OpenStack, virt-manager und libvirt genutzt
- Es bietet eine stabile Kommandozeilenschnittstelle sowie eine Monitor-API
- Der gesamte Quellcode wird unter der Lizenz GNU GPL v2 verteilt
Dokumentation
- Die offizielle Dokumentation ist online auf der Website verfügbar (https://www.qemu.org/documentation/)
- Die Dokumentation für die aktuelle Entwicklungsversion wird im Quellcode im Ordner
docs/gepflegt und mit dem Tool Sphinx erzeugt
Build-Umgebung
- QEMU unterstützt plattformübergreifende Builds auf aktuellem Linux, OS-X, Win32 (Mingw64 toolchain) und anderen UNIX-Umgebungen
- Der zentrale Build-Ablauf besteht aus den Schritten
configureundmake - Informationen zu Build-Methoden für die einzelnen Plattformen finden sich im QEMU-Wiki (https://wiki.qemu.org/Hosts/Linux usw.)
Leitfaden zum Einreichen von Patches
- Der QEMU-Quellcode wird mit dem Versionsverwaltungssystem Git verwaltet
- Zum Einreichen von Patches werden
git format-patchundgit send-emailempfohlen - Jeder Patch muss zwingend eine Signed-off-by-Zeile enthalten und dem Entwickler-Styleguide folgen (https://www.qemu.org/docs/master/devel/style.html)
- Mit dem Utility
git-publishlassen sich wiederkehrende und umfangreiche Patch-Einreichungsprozesse vereinfachen - Zusammen mit der Verwaltung von Patch-Versionen (v1, v2) lassen sich Serien leicht nachverfolgen
Bug-Reporting
- Offizielle Fehlermeldungen werden über den GitLab-Issue-Tracker abgewickelt (https://gitlab.com/qemu-project/qemu/-/issues)
- Bei paketbasierten Distributionen wird empfohlen, Fehler zuerst im Tracker des jeweiligen OS-Anbieters zu melden
- Im QEMU-Wiki finden sich zusätzliche Materialien, etwa zur Erstellung von Bug-Reports
Änderungshistorie
- Die Historie und Änderungen von QEMU lassen sich über das offizielle Wiki (https://wiki.qemu.org/ChangeLog/) oder die Git-Historie nachvollziehen
Kontakt zur Community
- Es gibt verschiedene Community-Kanäle wie die Mailingliste (qemu-devel@nongnu.org) und IRC (#qemu, irc.oftc.net)
- Weitere Informationen zur Community-Beteiligung und für Einsteiger sind im QEMU-Wiki verfügbar
Fazit
QEMU kann breit für die Emulation verschiedener Architekturen und Betriebssysteme, Virtualisierung sowie Entwicklungs-/Testautomatisierung eingesetzt werden, und auch Apple Silicon (einschließlich iPhone 11) ist Teil eines QEMU-Projekts. Zu den wichtigsten Vorteilen zählen die starke Dokumentation, der ausgereifte Beitragsprozess, aktives Bug-Management und guter Community-Support.
1 Kommentare
Hacker-News-Kommentare
Im Zusammenhang mit der Diskussion wurden der Hacker-News-Thread zum Upstream-Repository Link sowie „Emulating an iPhone in QEMU“ Link, das dieses Projekt erwähnt, geteilt
Dass es korrekt bootet und mindestens bis zum Springboard hochfährt, ist wirklich ein erstaunliches Leistungsniveau
Das ist Emulations-Hacking vom Feinsten, der wahre Endgegner. Glückwunsch an alle Mitwirkenden. Diese Leistung ist auch ein positives Signal für das Hackintosh-Projekt. Bis dahin ist es zwar noch ein weiter Weg, aber wenn ARM-PCs weit verbreitet sind, kann man sich durchaus Hoffnungen auf effiziente Emulation machen
Ich frage mich, ob auch TrollStore und die Entschlüsselung von IPAs unterstützt werden
Ich finde, es sollte zumindest versucht werden, einen Teil davon upstream einzubringen. Sonst besteht die Sorge, dass es wie frühere Versuche am Ende wieder verschwindet
Ich bin tief beeindruckt davon, dass ein iPhone 11 vollständig in QEMU gebootet wurde. Großes Lob an das Team von ChefKissInc und alle Mitwirkenden, die das bis hierher gebracht haben
Aus Sicht eines Einsteigers würde mich interessieren, ob man auf diese Weise iOS-Apps installieren kann
Es ist immer noch umständlich, dass die offizielle Dokumentation zur Nutzung von QEMU unter Windows, zu Optionen und Argumenten, so dürftig ist. Am Ende hilft man sich nur mit verstreuten Artikeln im Internet oder mit Beispielen aus der Linux-Welt weiter
Ich frage mich, ob hier tatsächlich das komplette iOS emuliert wird oder ob nur iOS-Binärdateien ausgeführt werden. Und warum wurde ausgerechnet das iPhone 11 ausdrücklich genannt?
Wie gut läuft das klassische Mac-Betriebssystem unter Qemu m68k?