L'iniziativa per implementare il supporto del chip Apple M1 in Linux, promossa dai progetti Asahi Linux e Corellium, ha raggiunto un livello in cui è possibile avviare un desktop GNOME in un ambiente Linux eseguito su un sistema con chip Apple M1. L'output a video è gestito tramite framebuffer, e il supporto OpenGL è fornito da un rasterizzatore software chiamato LLVMPipe. Il prossimo passo sarà l'integrazione del coprocessore video per l'output con risoluzione fino a 4K, per il quale è già stata effettuata l'ingegnerizzazione inversa dei driver.
Il progetto Asahi ha ottenuto l'inclusione nel kernel Linux di un supporto iniziale per i componenti SoC M1 non legati alla GPU. Nell'ambiente Linux dimostrato, oltre alle funzionalità del kernel di base, sono stati utilizzati diversi patch aggiuntivi relativi a PCIe, al driver pinctrl per il bus interno e al driver video. Questi aggiornamenti hanno reso possibile l'output a video e hanno permesso il funzionamento di USB ed Ethernet. L'accelerazione grafica non è ancora utilizzata.
È interessante notare che per l'ingegnerizzazione inversa del SoC M1, il progetto Asahi ha implementato un ipervisore invece di tentare la disassemblazione dei driver di macOS, eseguito a un livello intermedio tra macOS e il chip M1, intercettando e registrando trasparentemente tutte le operazioni con il chip. Tra le caratteristiche del SoC M1 che complicano l'implementazione del supporto per il chip in altri sistemi operativi, c'è l'inclusione di un coprocessore nel controller video (DCP). A questo coprocessore è stata trasferita metà della funzionalità del driver video di macOS, che invoca le funzioni pronte del coprocessore tramite un'interfaccia RPC speciale.
Gli appassionati hanno già esaminato sufficienti sfide di questo'interfaccia RPC per utilizzare il coprocessore per l'output su schermo, oltre a gestire il cursore hardware e ad eseguire operazioni di composizione e scaling. Il problema è che l'interfaccia RPC dipende dal firmware e cambia in ogni versione di macOS, quindi in Asahi Linux si prevede di implementare il supporto solo per determinate versioni del firmware. In primo luogo verrà garantito il supporto per il firmware fornito in macOS 12 "Monterey". Non è possibile scaricare la versione del firmware necessaria, poiché è iBoot a installare il firmware nella fase precedente al passaggio di controllo al sistema operativo e con verifica della firma digitale.


Fonte: opennet.ru
