Hacker News Digest

15 сентября 2026 г. в 19:30 • codyho.dev • ⭐ 209 • 💬 131

Original • HN

#apple#driver#gpu#linux#opengl-es#reverse-engineering#rtkit#rust#three.js#webgl

Building a Linux GPU Driver for the M4 Mac Mini in One Month

Cody Ho и Niklas создали полностью совместимый с OpenGL ES 3.0 GPU-драйвер для M4 Mac Mini и MacBook Neo за месяц — срок, обычно требующий лет разработки. Драйвер обеспечивает работу Chrome и Firefox с WebGL, включая трёхмерные демо three.js, и запускает Minecraft со скоростью 212 FPS на M4 Mac Mini. Разработка велась в условиях чистой комнаты: команда не смотрела на бинарники Apple, используя только аппаратные трассировки из ранее построенного гипервизора и собственные шейдеры. Для обхода необходимых Apple-блобов друг предоставил документацию, позволившую реализовать их функциональность с нуля. Все эксперименты опубликованы в репозиториях agx-re для проверки происхождения кода.

В ядре драйвер взаимодействует не с железом напрямую, а с прошивкой GPU, работающей на RTKit — кастомном RTOS от Apple. Reverse-инжиниринг ABI прошивки стал самой сложной частью: Apple фактически разделил типичный ядерный драйвер пополам, поместив половину в прошивку. ABI у M4, A18 Pro и M5 значительно различается — у A18 Pro из-за второго RTKit-сопроцессора прошивка ближе к M5, несмотря на сходство пользовательского пространства с M4. Команда reverse-инжинирила пользовательское пространство M4, A18 Pro и частично M5, построила собственный IR/шейдер-компилятор и билдер командных потоков, а также реализовала полноценный Linux-ядерный драйвер для ABI прошивки. Прошивка M5 полностью reverse-инженерирована, построен и протестирован прототип drm-shim, который близок к превращению в полноценный Rust-драйвер. Основные цели — M4 Mac Mini и MacBook Neo. Ошибки в работе прошивки требуют полной перезагрузки, а некорректные handshake приводят к молчаливой потере работы или скрытой коррупции памяти.