I ricercatori di sicurezza di Corellium sono riusciti ad installare una versione di Linux su Mac M1. Il progetto finale sarà sarà rilasciato con una licenza open source.
La versione Linux installata su Mac M1 è il sistema operativo desktop Ubuntu completo avviato tramite USB, come spiegato da Chris Wade, Chief Technology Officer di Corellium. Sebbene non siano stati condivisi molti dettagli, Wade ha affermato che Linux è ora “completamente utilizzabile su macchine Apple Silicon“.
La compatibilità di rete è possibile tramite un dongle USB-C e il prossimo aggiornamento supporterà USB, I2C e DART. Il sistema operativo Ubuntu utilizzato era stato inizialmente pensato per il Raspberry Pi basato su ARM.
Ovviamente, non mancano alcune limitazioni. Sebbene possa sfruttare appieno la CPU M1, questa versione non supporterà l’accelerazione GPU. Questo significa che la grafica sarà impostata sulla modalità di rendering software, con prestazioni molto più lente rispetto a quelle native su macOS.
Wade ha poi aggiunto che gli utenti potranno presto avviare Linux su un chip Apple Silicon usando pongoOS, che è un ambiente di esecuzione costruito partendo da checkra1n. Il progetto verrà presto rilasciato in modalità open source.
Gli aspetti tecnici
3 commenti FacebookFacebook Twitter Twitter Reddit Reddit
Linux ora funziona su Mac mini con processore M1, ma Apple non ha reso facile per il team portare il sistema operativo con il suo firmware personalizzato e percorsi dati univoci. Ecco come ha fatto Corellium.
Ora che Linux è completamente utilizzabile su Mac con processori M1, il team di Corellium ha dettagliato il processo per il porting del sistema operativo.
Nel post di giovedì, Corellium afferma di aver studiato i processori personalizzati di Apple da quando l’iPhone 6 è stato rilasciato nel 2014. L’azienda ha utilizzato alcuni exploit e lo studio precedente per costruire un port del kernel per il processore A10 all’inizio del 2020.
Apple ha rilasciato i Mac con processore M1 nel novembre 2020. Un aggiornamento del sistema operativo successivo ha consentito agli utenti di installare kernel personalizzati. In seguito all’aggiunta di questa capacità, il team di Corellium ha iniziato a lavorare su un port di Linux.
Corellium afferma che l’M1 condivide molti componenti con i processori della serie A di Apple. Tuttavia, ciò aiuta solo tanto quanto Apple non utilizza gli standard stabiliti da altri produttori ARM.
Il team di Corellium ha analizzato le esatte sfide che hanno dovuto affrontare durante il porting di Linux.
I dettagli tecnici
Corellium afferma che il processore M1 condivide molti componenti con la serie A di Apple utilizzata su iPhone e iPad. Tuttavia, ciò aiuta solo in parte, visto che Apple non utilizza gli standard classici utilizzati da altri produttori ARM.
Il team di Corellium afferma che Apple non avvia le sue CPU utilizzando mezzi tradizionali. Innanzitutto, il bootloader avvia un eseguibile chiamato Mach object file format (Mach-O) avvolto in un formato wrapper chiamato IMG4. Le cose diventano ancora più complicate quando vengono attivati più core della CPU, poiché portano a un indirizzo specificato da un registro MMIO (Memory-mapped I/O), per poi iniziare a eseguire il kernel.
Apple ha progettato il proprio controller al di fuori dei soliti standard ARM Generic Interrupt Controller (GIC). Gli interrupt del timer vengono instradati alla Fast Interrupt Request (FIQ), che non è standard e riflette un vecchio sistema ARM a 32 bit. Il team afferma che è necessario fornire una serie di interrupt tra processori (IPI) per consentire a più processori di comunicare.
Corellium aveva esperienza nella gestione del supporto FIQ ed era preparato per la maggior parte degli approcci non standard di Apple. Alla fine, il team ha aggiunto un pre-loader che funge da wrapper per Linux, che ha portato all’avvio del sistema operativo sul processore M1.
Il team non aveva un cavo di interfaccia per il Mac M1 e ha dovuto trovare un percorso alternativo di input. Delle tre opzioni, Bluetooth, host USB o host USB xHCI su PCIe, hanno scelto l’host USB e hanno dovuto interagire con un chip su I2C.
Dopo aver avviato una connessione USB adeguata, il team ha potuto collegare una tastiera, un mouse e un’unità flash. Questo ha aperto alla possibilità di eseguire una normale distribuzione Linux desktop.