Инициативата за реализиране на поддръжка на 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 на етапа преди предаването на контрола на операционната система и с верификация по цифров подпис.


Източник: opennet.ru
