Corellium hat eine angepasste Version von Linux vorgestellt um auf neueren Apple-Computern zu laufen, die mit dem Chip ausgestattet sind M1Die mit dem Apple M1-Chip kompatible Linux-Kernel-Variante wird unter der GPLv2-Lizenz veröffentlicht und es wurden Patches zur Aufnahme in den Hauptkernel eingereicht.
Corellium verfügt über umfangreiche Erfahrung bei der Migration von Linux auf Apple-Chips Wird auf mobilen Geräten wie dem iPhone verwendet. In der Anfangsphase der Migration wurden die Tester davon überzeugt, dass viele Komponenten des Apple M1 auf Technologien basieren, die Apple bereits in anderen SoCs verwendet.
Doch beim Schreiben der Treiber wurde klar, dass nicht alles so einfach ist. und der Apple M1-Chip enthält viele nicht standardmäßige Lösungen. Die Linux-Unterstützung für 64-Bit-ARM-SoCs basiert auf gemeinsamen Blöcken und Firmware-Schnittstellen, typische Lösungen nutzt der Apple M1 jedoch kaum.
Beispielsweise erfolgt bei herkömmlichen ARM-SoCs die Aktivierung der CPU-Kerne über die von der Firmware bereitgestellte PSCI-Schnittstelle (Power State Coordination Interface). Auf Apple M1 ist eine Manipulation des MMIO-Registers erforderlich.
In dieser Phase Die Corellium-Entwickler waren dem Asahi-Linux-Projekt voraus, gegründet von Hector Martin, um Linux auf Systeme mit dem Apple M1-Chip zu portieren, was sich bisher auf Reverse Engineering und Experimente mit einem Bootloader beschränkte. Das Hauptziel von Asahi Linux besteht jedoch nicht nur darin, Linux zu booten, sondern auch vollständige Unterstützung für Energieverwaltungsmechanismen bereitzustellen und die Fähigkeiten der Apple M1 GPU zu nutzen, die einen bestimmten Satz von Anweisungen verwendet.
Corellium-Patches beschränken sich auf das Booten und die Unterstützung bestimmter Funktionen von M1-Chips im Zusammenhang mit SMP-Modus, Timern, Interrupts, Leerlaufzustandsbehandlung und Initialisierung.
Die Vertreter von Asahi Linux begrüßten die Veröffentlichung von Corellium-Patches und brachten ihre Bereitschaft zum Ausdruck, Peer-Review-Unterstützung zu leisten, um die allgemeine Einführung des Linux-Kernels zu beschleunigen.
Darüber hinaus soll Alyssa Rosenzweig (von Collabora, das den Panfrost GPU Mali-Treiber entwickelt) auch einen zweiten Bericht über Reverse Engineering und Open-Source-Treiberentwicklung für die Apple M1 GPU veröffentlicht haben.
Derzeit wird ein erster Prototyp des Controllers vorbereitet, der mithilfe der GPU Dreiecke zeichnen kann. Bei M1-GPUs werden auch die ersten paar Vertex- und Fragment-Shader von Hand codiert. Der IOKit-Kerneltreiber wird als Schnittstelle zur GPU verwendet.
Der Apple M1 verwendet außerdem einen eigenen AIC-Interrupt-Controller. (Apple Interrupt Controller), der ist größtenteils nicht mit Standard-ARM-GICs kompatibel und ein anderer Mechanismus zum Binden von Interrupts von einem Timer. Um die Interaktion zwischen verschiedenen Prozessoren zu organisieren, werden außerdem separate Register verwendet, die IPI (Inter-Prozessor-Interrupts) steuern.
Um einen Mac Mini M1-Computer mit einem Apple M1-Chip zu starten, Ein gebrauchsfertiges RootFS-Image wird vorbereitet, Gebaut auf Basis des Ubuntu-Builds für den Raspberry Pi.
Zur Installation muss das Image auf ein Laufwerk kopiert werden USB, schließen Sie dieses Gerät an den USB-C-Anschluss an und starten Sie den Computer im 1TR-Modus (Wiederherstellungsbetriebssystem), indem Sie beim Booten die Ein-/Aus-Taste gedrückt halten. Nachdem die Befehlszeile angezeigt wird, müssen Sie das Skript linuxsetup.sh ausführen, das den Kernel installiert und die Umgebung einrichtet.
Zu diesem Zeitpunkt wird Linux gestartet. Um macOS zurückzubringen, müssen Sie den Befehl „bputil -n“ im 1TR-Modus ausführen.
Der fertige Build unterstützt USB, I2C und DART, es wird empfohlen, einen externen USB-Adapter für das Netzwerk zu verwenden, während Grafik-Hardwarebeschleunigung und erweiterte Peripheriegeräte noch nicht unterstützt werden. Für die Bluetooth-Unterstützung ist aufgrund der Verwendung eines nicht standardmäßigen PCIe-basierten Protokolls das Schreiben eines neuen Treibers erforderlich.
Quelle: https://corellium.com