N'attendez pas Linux sur les M4 de sitôt : c'est visiblement douloureusement compliqué
Sven Peters, un des développeurs du projet Asahi Linux, vient de jeter un pavé dans la mare. Selon lui, la prise en charge des puces M4 (et M3) est « rather painful », ce qui peut se traduire par « c'est très compliqué ». Son post sur Mastodon est très technique et peut ressembler à une langue totalement étrangère pour certains, mais nous allons tenter d'expliquer de façon simplifiée (mais pas nécessairement simple).
Dans les processeurs, il existe plusieurs niveaux de permissions, qui servent à sécuriser l'exécution des programmes. Le noyau, par exemple, a un niveau de permission élevé, alors qu'un logiciel quelconque, lui, doit avoir une priorité plus faible. L'idée est d'éviter un problème qui était courant dans les vieux systèmes d'exploitation : le cas d'un programme qui va écrire dans la mémoire à un endroit inapproprié, comme là où le noyau place ses données. Si vous avez connu Mac OS avant la version X, vous connaissez la sentence : un redémarrage était nécessaire. Dans les systèmes d'exploitation actuels, le but est d'essayer de réduire au minimum le nombre de programmes qui ont la priorité la plus élevée, notamment en déplaçant les pilotes vers l'espace utilisateur. De façon très résumée, un programme avec une priorité faible n'a pas accès à la mémoire d'un programme avec une priorité élevée.

Dans le cas des puces Apple, il y a essentiellement trois niveaux : EL0 pour les applications, EL1 pour le noyau et EL2 pour un hyperviseur, c'est-à-dire un programme qui va permettre (par exemple) de virtualiser un système d'exploitation. Sven Peters donne de nombreux détails dans un post de blog, sur les puces Apple M1. Le problème, c'est que la protection de la mémoire mise en place par Apple dès les puces A15 et M2 (Secure Page Table Monitor) empêche les outils nécessaires pour analyser le matériel des systèmes sur puce d'obtenir une priorité assez élevée, ce qui bloque les tentatives d'analyse.
De façon très concrète, il est possible de créer un noyau Linux qui démarre sur les puces M3 et M4 mais — pour le moment — l'analyse du fonctionnement des différents composants d'Apple (le GPU, certaines extensions propriétaires du CPU, etc.) n'est tout simplement pas envisageable. Et sans rétro-ingénierie, la conception d'un pilote pour obtenir une accélération vidéo (par exemple) est extrêmement compliquée (et probablement impossible). C'est un point que nous avons déjà traité dans un sujet récent, sur la prise en charge du microphone des Mac : Apple propose le nécessaire pour installer un autre système que macOS mais sans aucune documentation, ce qui oblige les développeurs à mettre les mains dans le cambouis (numérique) pour comprendre le fonctionnement des composants... et c'est ce qui bloque ici avec les puces M4.

Asahi Linux prend en charge le microphone des Mac portable, et ça a été compliqué