Het initiatief voor het implementeren van ondersteuning in Linux voor de Apple M1-chip, gepromoot door de projecten Asahi Linux en Corellium, heeft een niveau bereikt waarop het mogelijk is om de GNOME-desktop te draaien in een Linux-omgeving die op een systeem met de Apple M1-chip is gestart. De output op het scherm is georganiseerd met behulp van een framebuffer, en de ondersteuning voor OpenGL wordt geboden door de software renderer LLVMPipe. De volgende stap is het activeren van de display coprocessor voor uitvoer met een resolutie tot 4K, waarvoor al een reverse engineering van de stuurprogramma's is uitgevoerd.
Het Asahi-project heeft de initiƫle ondersteuning van componenten van de SoC M1, die niet gerelateerd zijn aan de GPU, in de hoofdversie van de Linux-kernel weten op te nemen. In de gedemonstreerde Linux-omgeving zijn, naast de mogelijkheden van de standaardkernel, verschillende aanvullende patches toegepast die verband houden met PCIe, een pinctrl-stuurprogramma voor de interne bus en een display-stuurprogramma. Deze toevoegingen maakten het mogelijk om de uitvoer op het scherm te garanderen en USB- en Ethernet-verbindingen te laten functioneren. Grafische versnelling wordt momenteel nog niet gebruikt.
Interessant is dat het Asahi-project voor de reverse engineering van de SoC M1 in plaats van het proberen uit te disassembleren van de stuurprogramma's van macOS een hypervisor heeft geĆÆmplementeerd, die opereert op een niveau tussen macOS en de M1-chip en op transparante wijze alle operaties met de chip onderschept en registreert. Tot de kenmerken van de SoC M1 die de implementatie van ondersteuning voor de chip in externe besturingssystemen bemoeilijken, behoort de toevoeging van een coprocessor aan de displaycontroller (DCP). De helft van de functionaliteit van de display-stuurprogramma van macOS is aan deze coprocessor toegewezen, die kant-en-klare functies van de coprocessor aanroept via een speciale RPC-interface.
Enthousiastelingen hebben al voldoende aanroepen van deze RPC-interface geanalyseerd om de coprocessor te gebruiken voor uitvoer op het scherm, evenals voor het beheren van de hardware cursor en het uitvoeren van compositie- en schalingsoperaties. Het probleem is dat de RPC-interface afhankelijk is van de firmware en verandert in elke versie van macOS, daarom is het plan van Asahi Linux om ondersteuning alleen voor bepaalde versies van de firmware te implementeren. In eerste instantie zal ondersteuning worden geboden voor de firmware die wordt geleverd met macOS 12 "Monterey". Het is niet mogelijk om de juiste versie van de firmware te downloaden, aangezien de firmware door iBoot wordt geĆÆnstalleerd in de fase voordat de controle aan het besturingssysteem wordt overgedragen, met verificatie via digitale handtekening.


Bron: opennet.ru
