Je dirais que tu rêves. Le principal problème sera la RAM limitée.
En 2004, Eric Beiderman a réussi à obtenir un démarrage du noyau avec 2,5 Mo de RAM , avec beaucoup de fonctionnalités supprimées.
Cependant, c'était sur x86, et vous parlez d'ARM. J'ai donc essayé de construire le plus petit noyau ARM possible, pour la plate-forme «polyvalente» (l'une des plus simples). J'ai désactivé toutes les options configurables, y compris celles que vous recherchez (USB, WiFi, SPI, I2C), pour voir à quel point cela deviendrait petit. Maintenant, je me réfère simplement au noyau ici, et cela n'inclut aucun composant de l'espace utilisateur.
La bonne nouvelle: elle rentrera dans votre flash. Le zImage résultant est de 383204 octets.
La mauvaise nouvelle: avec 256 Ko de RAM, il ne pourra pas démarrer:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Le segment .text est plus grand que votre RAM disponible, donc le noyau ne peut pas décompresser, encore moins allouer de la mémoire pour démarrer, et encore moins exécuter quoi que ce soit d'utile.
Une solution de contournement consisterait à utiliser le support d'exécution en place (CONFIG_XIP), si votre système le prend en charge (c'est-à-dire qu'il peut récupérer des instructions directement à partir de Flash). Cependant, cela signifie que votre noyau doit tenir non compressé en flash et 734 Ko> 700 Ko. De plus, les sections .data et .bss totalisent 66 Ko, laissant environ 190 Ko pour tout le reste (c'est-à-dire toutes les structures de données allouées dynamiquement dans le noyau).
C'est juste le noyau. Sans les pilotes dont vous avez besoin, ni aucun espace utilisateur.
Donc, oui, vous allez avoir besoin d'un peu plus de RAM.