A iniciativa de implementação do suporte Linux ao chip Apple M1, promovida pelos projetos Asahi Linux e Corellium, chegou ao ponto em que é possível rodar o desktop GNOME em um ambiente Linux rodando em um sistema com o chip Apple M1. A saída da tela é organizada usando um framebuffer e o suporte OpenGL é fornecido usando o rasterizador de software LLVMPipe. A próxima etapa será permitir que o coprocessador do monitor produza resolução de até 4K, cujos drivers já foram projetados de forma reversa.
O Projeto Asahi alcançou suporte inicial para componentes não-GPU do SoC M1 no kernel Linux principal. No ambiente Linux demonstrado, além dos recursos do kernel padrão, foram utilizados vários patches adicionais relacionados ao PCIe, ao driver pinctrl para o barramento interno e ao driver de vídeo. Essas adições tornaram possível fornecer saída de tela e obter funcionalidade USB e Ethernet. A aceleração gráfica ainda não é usada.
Curiosamente, para fazer engenharia reversa do SoC M1, o projeto Asahi, em vez de tentar desmontar os drivers do macOS, implementou um hipervisor que roda no nível entre o macOS e o chip M1 e intercepta e registra de forma transparente todas as operações no chip. Uma das características do SoC M1 que dificulta a implementação do suporte ao chip em sistemas operacionais de terceiros é a adição de um coprocessador ao controlador de vídeo (DCP). Metade da funcionalidade do driver de vídeo do macOS é transferida para o coprocessador especificado, que chama as funções prontas do coprocessador por meio de uma interface RPC especial.
Os entusiastas já analisaram chamadas suficientes para esta interface RPC para usar o coprocessador para saída de tela, bem como para controlar o cursor de hardware e realizar operações de composição e dimensionamento. O problema é que a interface RPC depende do firmware e muda com cada versão do macOS, então o Asahi Linux planeja oferecer suporte apenas a determinadas versões de firmware. Em primeiro lugar, será fornecido suporte para o firmware fornecido com o macOS 12 “Monterey”. Não é possível baixar a versão de firmware necessária, pois o firmware é instalado pelo iBoot na fase anterior à transferência do controle para o sistema operacional e com verificação por assinatura digital.
Fonte: opennet.ru