Corellium a prezentat o versiune de Linux adaptată să ruleze pe computere Apple mai noi echipate cu cip M1, varianta kernel-ului Linux compatibilă cu cipul Apple M1 este lansată sub licența GPLv2, iar patch-urile au fost trimise pentru includere în nucleul principal.
Corellium are o vastă experiență în migrarea de la Linux la cipurile Apple utilizat pe dispozitive mobile precum iPhone. În etapa inițială a migrației, testerii au fost încurajați că multe dintre componentele Apple M1 se bazează pe tehnologii utilizate deja de Apple în alte SoC-uri.
Dar în procesul de scriere a driverelor, a devenit clar că nu totul este atât de simplu iar cipul Apple M1 include multe soluții non-standard. Suportul Linux pentru SoC-urile ARM pe 64 de biți se bazează pe elemente obișnuite și interfețe firmware, dar Apple M1 utilizează cu greu soluții tipice.
De exemplu, în SoC-urile ARM convenționale, activarea nucleelor CPU se face prin PSCI (Power State Coordination Interface) furnizat de firmware și pe Apple M1 necesită manipularea registrului MMIO.
În această etapă, Dezvoltatorii Corellium au trecut înaintea proiectului Asahi Linux, fondată de Héctor Martin pentru a porni Linux pe sisteme cu cipul Apple M1, care până acum s-a limitat la inginerie inversă și experimentarea cu un bootloader. Cu toate acestea, obiectivul cheie al Asahi Linux nu este doar de a porni Linux, ci de a oferi suport complet pentru mecanismele de gestionare a energiei și de a utiliza capacitățile GPU Apple M1, care utilizează un set specific de instrucțiuni.
Patch-urile Corellium se limitează la furnizarea de boot și suport pentru caracteristici specifice a cipurilor M1 legate de modul SMP, temporizatoare, întreruperi, gestionarea stării de repaus și inițializare.
L Reprezentanții Asahi Linux au salutat lansarea patch-urilor Corellium și și-au exprimat dorința de a oferi asistență de evaluare inter pares pentru a accelera adoptarea generală a kernel-ului Linux.
În plus, s-a spus că Alyssa Rosenzweig (de la Collabora care dezvoltă driverul Panfrost GPU Mali) a publicat un al doilea raport privind ingineria inversă și dezvoltarea driverelor open source pentru GPU-ul Apple M1.
În etapa curentă, a fost pregătit un prototip inițial al controlerului, care poate desena triunghiuri folosind GPU. Pentru GPU-urile M1, primele umbrere ale vârfurilor și fragmentelor sunt, de asemenea, codificate manual. Driverul de nucleu IOKit este utilizat pentru a interacționa cu GPU.
Apple M1 folosește și propriul controler de întrerupere AIC (Apple Interrupt Controller), care în cea mai mare parte este incompatibil cu standardele GIC ARM și un alt mecanism de legare a întreruperilor dintr-un temporizator. În plus, pentru a organiza interacțiunea între mai multe procesoare, se utilizează registre separate care controlează IPI (întreruperile inter-procesor).
Pentru a porni pe un computer Mac Mini M1 cu un cip Apple M1, este pregătită o imagine rootfs gata de utilizat, construit pe baza construcției Ubuntu pentru Raspberry Pi.
Pentru instalare, imaginea trebuie copiată pe o unitate USB, conectați această unitate la portul USB-C și porniți computerul în modul 1TR (OS de recuperare) ținând apăsat butonul de pornire în timp ce porniți. După ce apare linia de comandă, trebuie să rulați scriptul linuxsetup.sh, care va instala nucleul și va configura mediul.
Atunci Linux va începe să ruleze, întrucât pentru a returna macOS, trebuie să rulați comanda „bputil -n” în modul 1TR.
Ready build acceptă USB, I2C și DART, se recomandă utilizarea adaptorului USB extern pentru rețea, în timp ce accelerarea hardware grafică și perifericele extinse nu sunt încă acceptate. Asistența Bluetooth necesită scrierea unui nou driver datorită utilizării unui protocol non-standard bazat pe PCIe.
Fuente: https://corellium.com