Corellium je objavio verziju Linuxa prilagođenu za rad na novim Apple računarima opremljenim M1 čipom . Varijanta Linux kernela kompatibilna s Apple M1 čipom objavljena je pod GPLv2 licencom, a zakrpe su poslane za uključivanje u glavni kernel.
Corellium ima veliko iskustvo u migraciji Linuxa na Apple čipove koji se koriste u mobilnim uređajima poput iPhonea. U početnoj fazi migracije, testeri su ohrabreni da saznaju da su mnoge komponente Apple M1 zasnovane na tehnologijama koje Apple već koristi u drugim SoC-ovima.
Ali tokom procesa razvoja drajvera, postalo je jasno da stvari nisu tako jednostavne i da Apple M1 čip uključuje mnoga nestandardna rješenja. Linux podrška za 64-bitne ARM SoC-ove oslanja se na uobičajene gradivne blokove i interfejse firmvera, ali Apple M1 gotovo ne koristi tipična rješenja.
Na primjer, u konvencionalnim ARM SoC-ovima, aktivacija CPU jezgre se vrši putem PSCI-ja (Power State Coordination Interface) koji pruža firmver, a u Apple M1 to zahtijeva manipulaciju MMIO registrom.
U ovoj fazi, Corelliumovi programeri su preuzeli projekat Asahi Linux , koji je osnovao Héctor Martin kako bi prenio Linux na sisteme sa Apple M1 čipom, što je do sada bilo ograničeno na obrnuti inženjering i eksperimentisanje sa bootloaderom. Međutim, ključni cilj Asahi Linuxa nije samo pokretanje Linuxa, već i pružanje pune podrške za mehanizme upravljanja napajanjem i korištenje mogućnosti Apple M1 GPU-a, koji koristi specifičan skup instrukcija.
Corellium zakrpe su ograničene na pružanje podrške za pokretanje sistema i specifične funkcije M1 čipa vezane za SMP način rada, tajmere, prekide, rukovanje stanjem mirovanja i inicijalizaciju.
Predstavnici Asahi Linuxa pozdravili su objavljivanje Corellium zakrpa i izrazili spremnost da pruže pomoć u recenziranju kako bi se ubrzalo usvajanje Linux kernela od strane šire javnosti.
Pored toga, takođe je rečeno da je Alyssa Rosenzweig (iz Collabora koja razvija drajver Panfrost GPU Mali) objavila drugi izvještaj o obrnutom inženjeringu i razvoju drajvera otvorenog koda za Apple M1 GPU.
U trenutnoj fazi, pripremljen je početni prototip kontrolera koji može crtati trouglove pomoću GPU-a. Za M1 GPU-ove, prvi temenski i fragmentni shaderi su također ručno kodirani. IOKit kernel drajver se koristi za interakciju sa GPU-om.
Apple M1 također koristi vlastiti Apple Interrupt Controller (AIC), koji je uglavnom nekompatibilan sa standardnim ARM GIC-ovima , i drugačiji mehanizam za povezivanje prekida s tajmerom. Nadalje, odvojeni registri koji kontroliraju IPI (međuprocesorske prekide) koriste se za upravljanje interakcijom između više procesora.
Za pokretanje sistema na Mac Mini M1 računaru sa Apple M1 čipom, pripremljena je rootfs slika spremna za upotrebu , izgrađena na osnovu Ubuntu verzije za Raspberry Pi.
Za instalaciju, kopirajte sliku na USB disk, spojite disk na USB-C port i pokrenite računar u 1TR mod (oporavak OS-a) tako što ćete držati pritisnuto dugme za napajanje tokom pokretanja. Kada se pojavi komandna linija, pokrenite skriptu linuxsetup.sh, koja će instalirati kernel i konfigurirati okruženje.
Tada će Linux početi raditi, dok za povratak na macOS morate pokrenuti naredbu "bputil -n" u 1TR modu.
Pripremljena verzija podržava USB, I2C i DART, predlaže se korištenje eksternog USB adaptera za umrežavanje, dok grafičko hardversko ubrzanje i proširene periferije još nisu podržani. Bluetooth podrška zahtijeva pisanje novog drajvera zbog korištenja nestandardnog PCIe protokola.
Izvor: https://corellium.com