A chegada do Kernel Linux 6.17 simboliza mais um salto rumo à plena compatibilidade com o ecossistema Apple Silicon. Graças ao trabalho incansável de desenvolvedores como Asahi Linux, o sistema livre avança sobre terreno historicamente fechado — os poderosos SoC Apple que equipam os Macs baseados nos chips Apple M1/M2/M3.
Neste ciclo, duas mudanças nos drivers Apple SoC chamam atenção: a flexibilização de um callback de memória na rtkit library e a remoção do ARCH_APPLE padrão no Kconfig. Paralelamente, um segundo pull request — disponível na lista lore.kernel.org — já encaminha bindings e nós de Device Tree (DT) para o futuro GPU Apple driver, ainda pendente pelas Rust dependencies que estreiam no núcleo.
Tudo isso reforça não só a estabilidade e a funcionalidade do Linux nesses dispositivos, mas também o papel da engenharia reversa e da comunidade open source em abrir caminhos antes inimagináveis para usuários e desenvolvedores de ARM64.
O avanço do Linux em Apple Silicon: compatibilidade e otimização de drivers SoC

Desde o anúncio oficial do Apple M1, em 2020, rodar Linux em Macs com Apple Silicon deixou de ser um sonho distante. O projeto Asahi Linux tomou a dianteira, desvendando o firmware proprietário, documentando registradores e criando drivers capazes de dialogar com subsistemas complexos como gerenciamento de energia, controladores USB, NVMe, barramentos PCIe internos e — sobretudo — a densa rede de coprocessors que compõe o SoC.
Com cada pull request, a árvore mainline incorpora novas peças desse quebra‑cabeça, reduzindo dependências de patches externos e aproximando‑se de uma experiência “out of the box”. O ciclo 6.17 exemplifica esse progresso incremental, porém crucial: otimizar componentes existentes é tão importante quanto adicionar suporte a novos periféricos.
Apple M1/M2/M3 no Linux: um objetivo desafiador e em constante evolução
Os chips Apple M1/M2/M3 combinam CPU, GPU, Neural Engine, codificadores multimídia e uma série de micro‑controladores dedicados. Cada subsistema exige um driver próprio e, em muitos casos, um protocolo de mensagens criptografado conduzido pelo System Management Controller (SMC).
Além disso, a Apple não publica documentação oficial. Tudo depende de engenharia reversa, análise de firmwares e colaboração estreita com iniciativas como a Linaro. O resultado é uma maratona técnica que envolve test‑benches, scripts de fuzzing, coleta de traces do macOS e um fluxo constante de provas de conceito.
É nesse contexto que otimizações aparentemente pequenas, como tornar um callback opcional, geram retorno desproporcional em desempenho e limpeza de código.
Otimizações no driver rtkit: flexibilidade no gerenciamento de memória
O primeiro patch da série, “soc: apple: rtkit: Make shmem_destroy optional”, modifica a rtkit library, responsável por intermediar mensagens entre o kernel e vários coprocessors (GPU, áudio, vídeo, segurança). O ponto central é o shmem_destroy callback, usado para liberar buffers quando um canal se fecha.
Para alguns clientes — como o SMC — essa etapa é irrelevante, pois a memória compartilhada não é alocada da mesma forma. Tornar o callback opcional remove lógica condicional nos drivers, evita verificações redundantes e reduz overhead de ciclo de CPU.
Em última instância, isso melhora a eficiência energética e a latência de chamadas, benefício palpável em laptops onde cada miliwatt conta.
Por que essa mudança importa para o usuário final?
- Boot mais rápido: menos caminhos de código durante a inicialização.
- Consumo reduzido: cada micro‑otimização impacta a autonomia de bateria.
- Base para novos drivers: o template de interação com rtkit fica mais enxuto, facilitando manutenção.
Refatoração do Kconfig: aprimorando a configuração do kernel para Apple SoC
O segundo patch, “soc: apple: Drop default ARCH_APPLE in Kconfig”, remove a seleção automática de ARCH_APPLE nos menus de configuração. Até então, qualquer build que incluísse drivers do Apple SoC herdava implicitamente a tag ARCH_APPLE, o que podia habilitar opções indesejadas em plataformas que apenas compilam objetos genéricos.
A mudança simples — retirar a diretiva default y — devolve ao mantenedor de distribuição o controle sobre quais blocos compilar, reduz o tamanho do kernel em sistemas não‑Apple e elimina falsas dependências internas. No futuro, um defconfig específico das máquinas Apple vai religar essas flags, mas de forma explícita e organizada.
Dica rápida
Para quem compila o próprio kernel, basta executar:
make menuconfig
e marcar manualmente System Type → Apple Silicon (ARCH_APPLE), garantindo que apenas os recursos necessários sejam incluídos.
Preparando o terreno para o driver de GPU Apple: a importância do Device Tree
Se o lado da CPU, NVMe e USB já está relativamente maduro, o suporte gráfico pleno ainda é o “Santo Graal” do Apple Silicon no Linux. O projeto está dividido em três frentes:
- AgX reimplementado: user‑space de aceleração gráfica.
- KMS/DRM: driver de kernel para modos de vídeo e buffer management.
- Mesa‑Rusticl: ponte de compute/graphics em Rust.
O segundo pull request submetido por Sven Peter não contém o driver em si, mas entrega seus “tijolos”: bindings e nós de Device Tree para a GPU. Em outras palavras, descreve ao kernel onde estão os registradores, quais interrupções usar e como mapear clocks e resets. Sem esses nós, o driver futuro sequer carrega.
Device Tree bindings e nós: a base para o suporte gráfico Apple
Criar bindings corretos é trabalho delicado. Eles devem permanecer estáveis, pois aplicações de espaço de usuário passam a depender dos nomes de nós, propriedades e phandles. No pull request, o autor expressa “alta confiança” no design atual, mesmo com o driver ausente, garantindo compatibilidade futura.
Além disso, um warning W=1 foi eliminado ao alinhar o binding de NVMEM (Non‑Volatile Memory) a novos requisitos da NVMEM tree. Essa limpeza de schema impede regressões e mantém o alto padrão de revisão empregado nos subsistemas de DT.
Dependências de Rust: o papel crescente da linguagem no desenvolvimento de drivers Linux
O GPU Apple driver usa componentes escritos em Rust, explorando segurança de memória, pattern matching e async/await nativos. Desde que Linus Torvalds aprovou o primeiro patch‑set de Rust para o kernel 6.1 — conforme detalhamos no artigo Rust chega ao Kernel Linux 6.1 — a adoção vem crescendo.
Para Apple Silicon, a escolha faz sentido: o stack gráfico original da Apple já mistura Swift, C++ e Rust; reutilizar conceitos simplifica a correspondência de funcionalidades. No entanto, isso traz desafios:
- Toolchain extra: o compilador Rust precisa estar presente no ambiente de build do kernel.
- Integração com C: zero‑cost abstractions devem ser mantidas para não penalizar desempenho.
- Auditoria de segurança: revisar unsafe blocks exige nova curva de aprendizado para mantenedores tradicionais.
Mais detalhes técnicos podem ser encontrados na FAQ oficial do Rust‑for‑Linux. Mesmo assim, o ganho potencial em robustez — evitando use‑after‑free e buffer overflows — é inegável.
Desafios e perspectivas para o driver de GPU: antes do lançamento oficial
Apesar do progresso, ainda faltam etapas:
- Reverse engineering de pacotes de firmware proprietários que carregam fragmentos de microcódigo na GPU.
- Implementação de command buffers compatíveis com o padrão Gallium, possibilitando integração com Mesa 3D.
- Suporte a PowerVR (T208/T211) nos Macs de primeira geração com Apple T2 SoC — essencial para quem ainda possui MacBook Pro 2018‑2019.
- Testes de estabilidade em cargas como Chromium, Vulkan e jogos via MoltenVK.
Os “power users” terão de esperar mais um ciclo para renderizar interfaces GNOME e KDE sem recorrer ao framebuffer software. Contudo, cada patch que entra encurta esse prazo.
Outras melhorias no Device Tree: Touchbar e limpeza de código
Além do foco na GPU, o pull request traz ajustes em plataformas legadas, demonstrando a filosofia “papercut fixers” do Asahi Linux: polir detalhes, mesmo quando não são manchetes.
Adição do nó do Touchbar Framebuffer no Apple T2 SoC
Nos MacBook Pro com Apple T2 SoC, a Touch Bar depende de um pequeno framebuffer dedicado. Sem a descrição correta no Device Tree, o driver de entrada/saída não sabe endereçar o display OLED, resultando em barras apagadas durante o boot. O novo nó corrige isso, habilitando gráficos iniciais e reduzindo flicker quando o firmware da Apple ainda não assumiu o controle.
Limpeza de warnings e alinhamento com NVMEM tree
O kernel 6.17 endureceu a verificação de schemas YAML. Qualquer nó inconsistente levanta avisos em dtbs_check
. Ao migrar propriedades de calibração de fábrica para a hierarquia NVMEM tree, os desenvolvedores eliminam ruídos de compilação e preparam o terreno para futuras leituras de calibração de DRAM, chaves criptográficas e tolerâncias térmicas.
Conclusão: Kernel Linux 6.17 – um passo vital na jornada para o suporte completo ao hardware Apple Silicon
O trabalho entregue por Sven Peter e pela comunidade Asahi Linux neste ciclo comprova que avanços significativos vêm tanto de grandes blocos — como o futuro GPU Apple driver — quanto de refinamentos pontuais, como um shmem_destroy callback opcional.
Somados, esses patches:
- Recuperam ciclos de CPU, prolongando a bateria.
- Simplificam a árvore de configuração via Kconfig.
- Pavimentam a estrada para vídeo acelerado com Rust dependencies robustas.
- Resolvem detalhes há muito aguardados, a exemplo da Touch Bar.
Para usuários de Linux em Macs com Apple Silicon, cada novo commit significa boot mais suave, menos gambiarras e um caminho mais curto até a plena paridade de recursos com o macOS. Para a comunidade mais ampla, é um estudo de caso sobre como o modelo open source pode decifrar plataformas proprietárias, promover estabilidade e entregar funcionalidade além das fronteiras impostas pelo fabricante.
Caso queira acompanhar o ritmo de desenvolvimento do kernel, vale também conferir o estado recente do Kernel Linux 6.16‑rc7, considerado “em boa forma” por Linus Torvalds — um lembrete de que a evolução é contínua e colaborativa.