Corellium annonce son portage de Linux vers des puces M1

Corellium a publié une version de Linux adaptée aux nouveaux ordinateurs Apple équipés de la puce M1 . Cette variante du noyau Linux compatible avec la puce Apple M1 est distribuée sous licence GPLv2, et des correctifs ont été soumis pour intégration au noyau principal.

Corellium possède une vaste expérience en matière de migration de Linux vers les puces Apple utilisées dans des appareils mobiles comme l'iPhone. Lors de la phase initiale de migration, les testeurs ont été encouragés à découvrir que de nombreux composants de la puce Apple M1 reposent sur des technologies déjà utilisées par Apple dans d'autres SoC.

Mais lors du développement des pilotes, il est apparu clairement que la situation était plus complexe, la puce Apple M1 intégrant de nombreuses solutions non standard. Si la prise en charge Linux des SoC ARM 64 bits repose sur des composants et des interfaces de firmware communs, l'Apple M1 n'utilise quasiment aucune solution classique.

Par exemple, dans les SoC ARM classiques, l'activation du cœur du processeur se fait via l'interface PSCI (Power State Coordination Interface) fournie par le firmware, tandis que dans l'Apple M1, elle nécessite la manipulation du registre MMIO.

À ce stade, les développeurs de Corellium ont pris le relais du projet Asahi Linux , fondé par Héctor Martin pour porter Linux sur les systèmes équipés de la puce Apple M1. Jusqu'à présent, ce projet se limitait à la rétro-ingénierie et à l'expérimentation d'un chargeur d'amorçage. Cependant, l'objectif principal d'Asahi Linux n'est pas seulement de permettre le démarrage de Linux, mais aussi d'assurer une prise en charge complète des mécanismes de gestion de l'alimentation et d'exploiter les capacités du GPU Apple M1, qui utilise un jeu d'instructions spécifique.

Les correctifs Corellium se limitent à fournir le démarrage et la prise en charge de fonctionnalités spécifiques de la puce M1 liées au mode SMP, aux minuteries, aux interruptions, à la gestion de l'état d'inactivité et à l'initialisation.

Les représentants d'Asahi Linux ont salué la publication des correctifs Corellium et ont exprimé leur volonté de fournir une assistance en matière d'évaluation par les pairs afin d'accélérer l'adoption généralisée du noyau Linux.

De plus, Alyssa Rosenzweig (de Collabora qui développe le pilote Panfrost GPU Mali) aurait également publié un deuxième rapport sur l'ingénierie inverse et le développement de pilotes open source pour le GPU Apple M1.

Au stade actuel, un premier prototype du contrôleur a été préparé, qui peut dessiner des triangles à l'aide du GPU. Pour les GPU M1, les premiers shaders de sommets et de fragments sont également codés à la main. Le pilote du noyau IOKit est utilisé pour interagir avec le GPU.

Le microcontrôleur Apple M1 utilise son propre contrôleur d'interruptions Apple (AIC), largement incompatible avec les contrôleurs d'interruptions généraux (GIC) ARM standard , ainsi qu'un mécanisme différent pour la liaison des interruptions provenant d'un minuteur. De plus, des registres distincts, contrôlant les interruptions interprocesseurs (IPI), sont utilisés pour gérer l'interaction entre plusieurs processeurs.

Pour démarrer sur un ordinateur Mac Mini M1 avec une puce Apple M1, une image rootfs prête à l'emploi est préparée , construite sur la base de la version Ubuntu pour Raspberry Pi.

Pour l'installation, copiez l'image sur une clé USB, connectez-la au port USB-C et démarrez l'ordinateur en mode 1TR (système d'exploitation de récupération) en maintenant le bouton d'alimentation enfoncé au démarrage. Une fois l'invite de commandes affichée, exécutez le script linuxsetup.sh, qui installera le noyau et configurera l'environnement.

C’est à ce moment que Linux démarrera, tandis que pour revenir à macOS, vous devez exécuter la commande « bputil -n » en mode 1TR.

Ready build prend en charge USB, I2C et DART, il est suggéré d'utiliser un adaptateur USB externe pour le réseau, tandis que l'accélération matérielle graphique et les périphériques étendus ne sont pas encore pris en charge. La prise en charge Bluetooth nécessite l'écriture d'un nouveau pilote en raison de l'utilisation d'un protocole PCIe non standard.

Source : https://corellium.com


Ajouter comme source préférée dans Google