Pour comprendre ce dont chaque fichier est responsable, vous devez comprendre comment MPU démarre.
D'après votre question, j'ai compris que vous utilisez la famille de microprocesseurs NXP (Freescale) i.MX. Il comprend un petit chargeur de ROM, qui effectuera la configuration de base du système (interfaces vers la mémoire, arbre d'horloge, etc.), recherchera le support à partir duquel démarrer (basé sur les bits OTP gravés ou GPIO), trouvera le chargeur de démarrage (u-boot dans votre cas) dans adresse exacte spécifiée dans la fiche technique, chargez-la et démarrez-la. U-boot va initialiser plus d'interfaces (par exemple Ethernet), trouver les arguments qui doivent être transmis au noyau (paramètres d'écran, console, paramètres réseau si vous utilisez NFS), copier le noyau vers DDR et transmettre tous les arguments. Le noyau chargera tous les pilotes et recherchera rootfs avec toutes les bibliothèques, applications, etc. Après cela, le noyau lancera les scripts d'initialisation, qui initialiseront tout le système et démarreront votre application.
- u-boot est la première chose qui démarrera après le chargeur de démarrage de la ROM. Vous pouvez le remplacer par votre propre code si vous souhaitez que MPU exécute du code sans système d'exploitation (comme un microcontrôleur).
- zImage est une version compressée de l'image du noyau Linux qui est auto-extractible.
- rootfs est le système de fichiers racine, qui contient toutes les applications, les bibliothèques et dans la plupart des cas tout, y compris le dossier personnel.
- l'image de la carte SD est juste tout ce qui est mentionné ci-dessus qui peut être copié (avec dd) sur la carte, après la copie, vous verrez FATpartition avec le noyau et l'arborescence des périphériques et la partition EXT avec rootfs, u-boot est dans une zone non partitionnée avant FAT (dans cas où vous utilisez i.MX6, c'est 0x80000). Il est là pour vous faciliter la vie.
zImage
est l'image binaire réelle du noyau compilé. C'est ce que le chargeur de démarrage chargera et tentera d'exécuter (je crois que sur Linux intégré, il est écrit directement dans le secteur de démarrage d'une manière ou d'une autre ; consultez le manuel de votre distribution Linux intégrée pour obtenir des instructions)rootfs
est l'image dite INITial RamDisk (également connue sous le nom d'initrd) qui contient tout ce dont le noyau aura besoin pour démarrer dans un état où le système de fichiers racine réel peut être monté.uboot
est le chargeur de démarrage utilisé par Linux embarqué ; Il indique essentiellement au BIOS (Basic Input Output System) d'exécuterzImage
avec les options qui indiquentzImage
où trouver le système de fichiers racine pour qu'il sache comment démarrer.
Si je devais deviner, je risquerais que tous ces fichiers soient créés lors du processus de génération de l'image réelle de la carte SD, même si vous n'avez plus besoin d'ajouter manuellement les trois premiers à l'image finale.