Corellium heeft een versie van Linux uitgebracht die is aangepast voor de nieuwe Apple-computers met de M1- chip . Deze variant van de Linux-kernel die compatibel is met de Apple M1-chip wordt uitgebracht onder de GPLv2-licentie en er zijn patches ingediend voor opname in de hoofdkernel.
Corellium heeft ruime ervaring met het migreren van Linux naar Apple-chips die worden gebruikt in mobiele apparaten zoals de iPhone. Tijdens de eerste migratiefase werden testers verrast door het feit dat veel componenten van de Apple M1 gebaseerd zijn op technologieën die Apple al in andere SoCs gebruikt.
Maar tijdens het ontwikkelingsproces van de driver werd duidelijk dat de zaken niet zo eenvoudig zijn en dat de Apple M1-chip veel niet-standaard oplossingen bevat. Linux-ondersteuning voor 64-bits ARM SoC's is gebaseerd op gangbare bouwstenen en firmware-interfaces, maar de Apple M1 maakt nauwelijks gebruik van typische oplossingen.
In conventionele ARM SoCs wordt de activering van de CPU-kern bijvoorbeeld gedaan via de PSCI (Power State Coordination Interface) die door de firmware wordt geleverd, terwijl dit in de Apple M1 manipulatie van het MMIO-register vereist.
In dit stadium hebben de ontwikkelaars van Corellium het Asahi Linux-project ingehaald . Dit project , opgericht door Héctor Martin om Linux te porteren naar systemen met de Apple M1-chip, was tot nu toe beperkt tot reverse engineering en experimenten met een bootloader. Het belangrijkste doel van Asahi Linux is echter niet alleen het opstarten van Linux, maar ook het bieden van volledige ondersteuning voor energiebeheer en het benutten van de mogelijkheden van de Apple M1 GPU, die een specifieke instructieset gebruikt.
De Corellium-patches beperken zich tot het bieden van opstartfunctionaliteit en ondersteuning voor specifieke M1-chipfuncties met betrekking tot de SMP-modus, timers, interrupts, afhandeling van de inactieve toestand en initialisatie.
Vertegenwoordigers van Asahi Linux verwelkomden de publicatie van de Corellium-patches en gaven aan bereid te zijn om te helpen bij de collegiale toetsing om de algemene acceptatie van de Linux-kernel te versnellen.
Bovendien zou Alyssa Rosenzweig (van Collabora, die de Panfrost GPU Mali-driver ontwikkelt) ook een tweede rapport hebben gepubliceerd over reverse engineering en open source driverontwikkeling voor de Apple M1 GPU.
In het huidige stadium is een eerste prototype van de controller voorbereid, die driehoeken kan tekenen met behulp van de GPU. Voor M1 GPU's zijn de eerste paar vertex- en fragment-shaders ook met de hand gecodeerd. Het IOKit-kernelstuurprogramma wordt gebruikt om te communiceren met de GPU.
De Apple M1 gebruikt ook een eigen Apple Interrupt Controller (AIC), die grotendeels incompatibel is met standaard ARM GIC's , en een ander mechanisme voor het koppelen van interrupts aan een timer. Bovendien worden aparte registers gebruikt die IPI (inter-processor interrupts) aansturen om de interactie tussen meerdere processors te beheren.
Om een Mac Mini M1-computer met een Apple M1-chip op te starten, wordt een kant-en-klaar rootfs-image voorbereid , gebouwd op basis van de Ubuntu-build voor Raspberry Pi.
Om te installeren, kopieert u de image naar een USB-stick, sluit u de stick aan op de USB-C-poort en start u de computer op in 1TR-modus (herstelmodus) door de aan/uit-knop ingedrukt te houden tijdens het opstarten. Zodra de opdrachtregel verschijnt, voert u het script linuxsetup.sh uit. Dit script installeert de kernel en configureert de omgeving.
Nu zal Linux opstarten, terwijl je om terug te keren naar macOS de opdracht "bputil -n" in 1TR-modus moet uitvoeren.
De kant-en-klare build ondersteunt USB, I2C en DART, het wordt aanbevolen om een externe USB-adapter voor het netwerk te gebruiken, terwijl grafische hardwareversnelling en uitgebreide randapparatuur nog niet worden ondersteund. Bluetooth-ondersteuning vereist het schrijven van een nieuw stuurprogramma vanwege het gebruik van een niet-standaard op PCIe gebaseerd protocol.
Bron: https://corellium.com