Инициатива по реализации поддержки в Linux чипа Apple M1, продвигаемая проектами Asahi Linux и Corellium, достигла уровня, при котором стал возможен запуск рабочего стола GNOME в Linux-окружении, запущенном на системе с чипом Apple M1. Вывод на экран организован при помощи framebuffer, а поддержка OpenGL обеспечена при помощи программного растеризатора LLVMPipe. Следующим шагом станет задействование дисплейного сопроцессора для вывода с разрешением до 4K, обратный инжинириг драйверов для которого уже проведён.
Проект Asahi добился включения в основной состав ядра Linux начальной поддержки компонентов SoC M1, не связанных с GPU. В продемонстрированном Linux-окружении помимо возможностей штатного ядра использовано несколько дополнительных патчей, связанных с PCIe, драйвером pinctrl для внутренней шины и дисплейным драйвером. Указанные дополнения позволили обеспечить вывод на экран и добиться работы USB и Ethernet. Ускорение графики пока не используется.
Интересно, что для обратного инжинигинга SoC M1 проект Asahi вместо попыток дизассемблирования драйверов macOS реализовал гипервизор, выполняемый на уровне между macOS и чипом M1 и в прозрачном режиме перехватывающий и журналирующий все операции с чипом. Из особенностей SoC M1, затрудняющих реализацию поддержки чипа в сторонних ОС, упоминается добавление сопроцессора в дисплейный контроллер (DCP). На сторону указанного сопроцессора вынесена половина функциональности дисплейного драйвера macOS, который вызывает готовые функции сопроцессора через специальный RPC-интерфейс.
Энтузиасты уже разобрали достаточно вызовов данного RPC-интерфейса, для того чтобы задействовать сопроцессор для вывода на экран, а также для управления аппаратным курсором и выполнением операций композитинга и масштабирования. Проблема состоит в том, что RPC-интерфейс зависит от прошивки и меняется в каждой версии macOS, поэтому в Asahi Linux планируется реализовать поддержку только определённых версий прошивок.
В первую очередь будет обеспечена поддержка прошивки, поставляемой в
macOS 12 “Monterey”. Загрузить нужный вариант прошивки не представляется возможным, так как прошивку устанавливает iBoot на стадии до передачи управления операционной системе и с верификацией по цифровой подписи.