Iniciativa pro implementaci podpory čipu Apple M1 v Linuxu, kterou podporují projekty Asahi Linux a Corellium, dosáhla fáze, kdy je možné spustit desktop GNOME v Linuxovém prostředí na systému s čipem Apple M1. Výstup na obrazovku je zajištěn pomocí framebufferu, a podpora OpenGL je zajištěna pomocí softwarového rasterizátoru LLVMPipe. Dalším krokem bude zapojení displejového koprocesoru pro výstup s rozlišením až 4K, jehož zpětné inženýrství ovladačů již bylo provedeno.
Projekt Asahi dosáhl začlenění počáteční podpory komponentů SoC M1 nesouvisejících s GPU do hlavní větve jádra Linuxu. V předvedeném Linuxovém prostředí byly kromě funkcionality standardního jádra použity i další patche, které se týkají PCIe, ovladače pinctrl pro interní sběrnici a displejového ovladače. Tyto doplňky umožnily zajištění výstupu na obrazovku a funkčnost USB a Ethernetu. Akcelerace grafiky prozatím není využita.
Zajímavé je, že pro zpětné inženýrství SoC M1 projekt Asahi místo pokusů o disassemblaci ovladačů macOS implementoval hypervisor, který běží na úrovni mezi macOS a čipem M1 a transparentně zachytává a zaznamenává veškeré operace s čipem. Mezi rysy SoC M1, které ztěžují implementaci podpory čipu ve třetích OS, se zmiňuje přidání koprocesoru do displejového kontroléru (DCP). Na stranu tohoto koprocesoru byla přesunuta polovina funkcionality displejového ovladače macOS, který volá hotové funkce koprocesoru prostřednictvím speciálního RPC rozhraní.
Nadšenci již prozkoumali dostatek výzev tohoto rozhraní RPC, aby aktivovali koprocesor pro zobrazení na obrazovce, jakož i pro ovládání hardwarového kurzoru a provádění kompozitních a škálovacích operací. Problém spočívá v tom, že rozhraní RPC závisí na firmwaru a mění se v každé verzi macOS, proto se v Asahi Linux plánuje implementace podpory pouze pro určité verze firmwaru. V první řadě bude zajištěna podpora firmwaru dodávaného s macOS 12 „Monterey“. Stáhnout potřebnou verzi firmwaru není možné, protože firmware instaluje iBoot ve fázi před předáním kontroly operačnímu systému a s ověřením pomocí digitálního podpisu.


Zdroj: opennet.ru
