GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce que zImage, rootfs

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.

  1. 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).
  2. zImage est une version compressée de l'image du noyau Linux qui est auto-extractible.
  3. 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.
  4. 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écuter zImage avec les options qui indiquent zImage 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.


Linux
  1. Quelle est la source actuelle du noyau Linux ?

  2. Que contient une image/un conteneur Docker ?

  3. Que fait l'activation de kernel.unprivileged_userns_clone ?

  4. Qu'est-ce que la mémoire haute et la mémoire basse sous Linux ?

  5. Que sont exactement les en-têtes du noyau Linux ?

Qu'est-ce qu'une image dorée ?

Que faire en cas de panique du noyau Linux

Qu'est-ce qu'un manifeste d'image Docker ?

Quelle est la différence entre les termes Makefile du noyau suivants :vmLinux, vmlinuz, vmlinux.bin, zimage &bzimage ?

Qu'est-ce que le transfert IP du noyau ?

Quelle est la différence entre l'espace utilisateur et l'espace noyau ?