Corellium ha presentato una versione di Linux adattata per funzionare su computer Apple più recenti dotati del chip M1, la variante del kernel Linux compatibile con il chip Apple M1 è rilasciata con licenza GPLv2 e sono state inviate patch per l'inclusione nel kernel principale.
Corellium ha una vasta esperienza nella migrazione da Linux a chip Apple utilizzato su dispositivi mobili come l'iPhone. Nella fase iniziale della migrazione, i tester sono stati incoraggiati dal fatto che molti dei componenti di Apple M1 sono basati su tecnologie già utilizzate da Apple in altri SoC.
Ma durante il processo di scrittura dei driver, è diventato chiaro che non tutto è così semplice e il chip Apple M1 include molte soluzioni non standard. Il supporto Linux per SoC ARM a 64 bit si basa su elementi costitutivi comuni e interfacce firmware, ma l'Apple M1 difficilmente utilizza soluzioni tipiche.
Ad esempio, nei SoC ARM convenzionali, l'attivazione dei core della CPU avviene tramite la PSCI (Power State Coordination Interface) fornita dal firmware e su Apple M1 richiede la manipolazione del registro MMIO.
In questa fase, Gli sviluppatori di Corellium hanno anticipato il progetto Asahi Linux, fondata da Héctor Martin per portare Linux su sistemi con il chip Apple M1, che fino ad ora si è limitato al reverse engineering e alla sperimentazione di un bootloader. Tuttavia, l'obiettivo principale di Asahi Linux non è solo avviare Linux, ma fornire pieno supporto ai meccanismi di gestione dell'alimentazione e utilizzare le funzionalità della GPU Apple M1, che utilizza un set specifico di istruzioni.
Le patch Corellium si limitano a fornire avvio e supporto per funzionalità specifiche di chip M1 relativi alla modalità SMP, timer, interrupt, gestione dello stato di inattività e inizializzazione.
I I rappresentanti di Asahi Linux hanno accolto con favore il rilascio delle patch Corellium e hanno espresso la volontà di fornire assistenza alla revisione tra pari per accelerare l'adozione mainstream del kernel Linux.
Inoltre, si dice che Alyssa Rosenzweig (di Collabora che sviluppa il driver Panfrost GPU Mali) abbia pubblicato un secondo rapporto sul reverse engineering e lo sviluppo di driver open source per la GPU M1 di Apple.
Nella fase attuale, è stato preparato un prototipo iniziale del controller, che può disegnare triangoli utilizzando la GPU. Per le GPU M1, anche i primi shader di vertici e frammenti sono codificati a mano. Il driver del kernel IOKit viene utilizzato per interagire con la GPU.
L'Apple M1 utilizza anche il proprio controller di interrupt AIC (Apple Interrupt Controller), che per la maggior parte è incompatibile con i GIC ARM standard e un meccanismo diverso per l'associazione degli interrupt da un timer. Inoltre, per organizzare l'interazione tra più processori, vengono utilizzati registri separati che controllano IPI (interrupt tra processori).
Per avviare un computer Mac Mini M1 con un chip Apple M1, viene preparata un'immagine rootfs pronta per l'uso, costruito sulla base della build Ubuntu per Raspberry Pi.
Per l'installazione, l'immagine deve essere copiata su un'unità USB, collegare questa unità alla porta USB-C e avviare il computer in modalità 1TR (Ripristino del sistema operativo) premendo e tenendo premuto il pulsante di accensione durante l'avvio. Dopo la visualizzazione della riga di comando, è necessario eseguire lo script linuxsetup.sh, che installerà il kernel e configurerà l'ambiente.
Questo è quando Linux inizierà a funzionare, mentre per restituire macOS, è necessario eseguire il comando "bputil -n" in modalità 1TR.
Ready build supporta USB, I2C e DART, si consiglia di utilizzare un adattatore USB esterno per la rete, mentre l'accelerazione hardware grafica e le periferiche estese non sono ancora supportate. Il supporto Bluetooth richiede la scrittura di un nuovo driver a causa dell'uso di un protocollo basato su PCIe non standard.
fonte: https://corellium.com