Faire tourner Linux sur un microcontrôleur à quelques euros relève de la gageure technique. C'est pourtant ce qu'a réalisé un développeur connu sous le pseudonyme Paulneja, qui est parvenu à démarrer le noyau Linux 6.11 sur une puce ESP32-S3, rapporte le site spécialisé Hackaday. La performance mérite d'être soulignée : cette famille de microcontrôleurs, très prisée des amateurs d'électronique et des fabricants d'objets connectés, n'a jamais été conçue pour accueillir un système d'exploitation complet.
L'ESP32-S3 embarque deux cœurs Xtensa LX7 cadencés à 240 MHz, épaulés par un maximum de 16 Mo de mémoire PSRAM. Des caractéristiques confortables pour un microcontrôleur, mais dérisoires à l'échelle d'un ordinateur de bureau. La principale difficulté tient à l'absence d'unité de gestion mémoire, ou MMU, un composant que Linux considère habituellement comme indispensable. Sans lui, le noyau ne peut pas isoler les espaces d'adressage des différents processus, une fonction essentielle à la stabilité et à la sécurité du système.
Pour contourner cet obstacle, le développeur a opté pour une configuration Linux dite NOMMU, c'est-à-dire sans MMU, complétée par une implémentation personnalisée de l'appel système fork(). Cette approche permet de créer de nouveaux processus sans recourir aux mécanismes de virtualisation mémoire absents du matériel. La version 0.7 de ce portage fonctionnait déjà de manière partielle, mais c'est la version 0.8 qui franchit un cap décisif : elle démarre de façon fiable et laisse suffisamment de mémoire vive disponible pour être réellement utilisable.
Le gain est spectaculaire entre les deux versions. Là où la mouture précédente peinait à offrir un espace exploitable, la version 0.8 affiche 3,7 Mo de RAM libre après le démarrage. La consommation globale des ressources et les performances ont également été nettement améliorées. Un détail mérite toutefois d'être précisé : un seul des deux cœurs de la puce est dédié à Linux. Le second reste occupé par la pile FreeRTOS ESP-IDF, qui assure la connectivité Wi-Fi et Bluetooth. Autrement dit, le système d'exploitation ne dispose que de la moitié de la puissance de calcul théorique du composant.
Les essais ont été menés sur une carte ESP32-S3 en configuration N16R8, soit 16 Mo de mémoire Flash, dont une partie sert également de stockage inscriptible, et 8 Mo de PSRAM octal. Ce choix de configuration n'est pas anodin : il conditionne directement la quantité de mémoire disponible pour le noyau et les applications. Sur des variantes moins généreusement dotées, l'exercice serait probablement impossible ou beaucoup plus limité.
Le développeur insiste sur la nature de son travail : il s'agit d'un projet de recherche, et non d'une plateforme prête à être déployée en production. Les performances restent modestes et les usages envisageables demeurent expérimentaux. On peut néanmoins imaginer des applications dans la lignée des systèmes Linux embarqués, comme un routeur réseau faisant tourner une suite d'outils légers de type BusyBox. Ce type de démonstration rappelle que la frontière entre microcontrôleurs et ordinateurs complets ne cesse de s'estomper.
Cette expérience s'inscrit dans une tendance de fond : celle de l'embarqué minimaliste, où des passionnés repoussent les limites de composants pensés pour des tâches simples. Elle illustre aussi la flexibilité du noyau Linux, capable de fonctionner dans des environnements matériels très contraints dès lors que l'on accepte de renoncer à certaines abstractions. Pour les amateurs d'électronique et les développeurs curieux, la démarche ouvre une voie d'exploration : celle d'un Linux réduit à l'essentiel, exécuté sur une puce de quelques centimètres carrés.