Corellium przedstawił dostosowaną wersję Linuksa działa na nowszych komputerach Apple wyposażonych w chip M1, wariant jądra Linuksa kompatybilny z chipem Apple M1 jest wydany na licencji GPLv2, a łaty zostały wysłane do włączenia do głównego jądra.
Corellium ma duże doświadczenie w migracji z Linuksa na chipy Apple używane w urządzeniach mobilnych, takich jak iPhone. Na wczesnym etapie migracji testerów zachęcano, że wiele komponentów Apple M1 jest opartych na technologiach używanych już przez Apple w innych SoC.
Ale w trakcie pisania sterowników stało się jasne, że nie wszystko jest takie proste a chip Apple M1 zawiera wiele niestandardowych rozwiązań. Obsługa systemu Linux dla 64-bitowych układów SoC ARM jest oparta na wspólnych blokach i interfejsów oprogramowania układowego, ale Apple M1 prawie nie wykorzystuje typowych rozwiązań.
Na przykład w konwencjonalnych SoC ARM aktywacja rdzeni procesora odbywa się za pośrednictwem PSCI (Power State Coordination Interface) dostarczanego przez oprogramowanie układowe i na Apple M1 wymaga manipulacji rejestrem MMIO.
Na tym etapie Programiści Corellium wyprzedzili projekt Asahi Linux, założona przez Héctora Martina w celu przeniesienia Linuksa na systemy z chipem Apple M1, który do tej pory był ograniczony do inżynierii wstecznej i eksperymentowania z bootloaderem. Jednak kluczowym celem Asahi Linux jest nie tylko uruchomienie Linuksa, ale zapewnienie pełnej obsługi mechanizmów zarządzania energią i wykorzystanie możliwości procesora graficznego Apple M1, który używa określonego zestawu instrukcji.
Poprawki Corellium ograniczają się do zapewniania rozruchu i obsługi określonych funkcji chipów M1 związanych z trybem SMP, licznikami czasu, przerwaniami, obsługą stanu bezczynności i inicjalizacją.
L Przedstawiciele Asahi Linux z zadowoleniem przyjęli wydanie łatek Corellium i wyrazili chęć zapewnienia pomocy w recenzowaniu, aby przyspieszyć powszechne przyjęcie jądra Linuksa.
Ponadto Alyssa Rosenzweig (z Collabora, która opracowuje sterownik dla GPU Panfrost Mali) również opublikowała drugi raport na temat inżynierii odwrotnej i opracowywania sterowników open source dla GPU Apple M1.
Na obecnym etapie został przygotowany wstępny prototyp kontrolera, który może rysować trójkąty za pomocą GPU. W przypadku procesorów graficznych M1 pierwsze Vertex Shadery i Fragment Shadery są również kodowane ręcznie. Sterownik jądra IOKit jest używany do interakcji z GPU.
Apple M1 używa również własnego kontrolera przerwań AIC (Apple Interrupt Controller), który w przeważającej części jest niekompatybilny ze standardowymi kartami ARM GIC i inny mechanizm wiązania przerwań z timera. Ponadto, aby zorganizować interakcję między wieloma procesorami, używane są oddzielne rejestry sterujące IPI (przerwania międzyprocesorowe).
Aby uruchomić komputer Mac Mini M1 z chipem Apple M1, przygotowany jest gotowy do użycia obraz rootfs, zbudowany w oparciu o kompilację Ubuntu dla Raspberry Pi.
Aby zainstalować, musisz skopiować obraz na dysk USB, podłącz to urządzenie do portu USB-C i uruchom komputer w trybie 1TR (Recovery OS), naciskając i przytrzymując przycisk zasilania podczas uruchamiania. Po pojawieniu się wiersza poleceń należy uruchomić skrypt linuxsetup.sh, który zainstaluje jądro i skonfiguruje środowisko.
Wtedy Linux zacznie działać, mając na uwadze, że aby zwrócić macOS, musisz uruchomić polecenie „bputil -n” w trybie 1TR.
Gotowa kompilacja obsługuje USB, I2C i DART, sugeruje się użycie zewnętrznego adaptera USB do sieci, podczas gdy akceleracja sprzętowa grafiki i rozszerzone urządzenia peryferyjne nie są jeszcze obsługiwane. Obsługa Bluetooth wymaga napisania nowego sterownika ze względu na użycie niestandardowego protokołu opartego na PCIe.
źródło: https://corellium.com