web-dev-qa-db-fra.com

Image vs zImage vs uImage

Quelle est la différence entre eux?

Je sais que u-boot a besoin d'un noyau au format uImage.

Le système que j’utilise d’abord démarre à partir du chargeur de l’étape 1, puis il appelle u-boot. Je veux supprimer u-boot et démarrer directement à partir du chargeur de l'étape 1. Quel type d'image de noyau dois-je utiliser?

69
yildizabdullah

Quelle est la différence entre eux?

Image : le fichier d'image binaire générique du noyau Linux.

zImage : version compressée de l'image du noyau Linux à extraction automatique.

uImage : un fichier image doté d'un wrapper U-Boot (installé par le mkimage utilitaire) qui inclut le type de système d'exploitation et les informations du chargeur.
Une pratique très courante (par exemple, le Makefile typique du noyau Linux) consiste à utiliser un fichier zImage. Comme un fichier zImage est auto-extractible (c’est-à-dire qu’il n’a pas besoin de décompresseurs externes), le wrapper indiquerait que ce noyau n’est "pas compressé" même s’il le est réellement.


Notez que l'auteur/responsable de U-Boot considère l'utilisation (généralisée) de l'utilisation d'une zImage dans une uImage discutable:

En fait, il est assez stupide d’utiliser une image zImage dans une image uImage. Il est bien mieux d’utiliser une image de noyau normale (non compressée), de la compresser avec seulement gzip et de l’utiliser comme chargement de mkimage. De cette façon, U-Boot décompresse au lieu d'inclure un autre décompresseur avec chaque image du noyau.

(cité de https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html )


Quel type d'image de noyau dois-je utiliser?

Vous pouvez choisir ce que vous voulez programmer.
Par souci d'économie de stockage, vous devriez probablement choisir une image compressée plutôt qu'une image non compressée.
Attention, l’exécution du noyau (vraisemblablement le noyau Linux) implique plus que le chargement de l’image du noyau en mémoire. En fonction de l'architecture (par exemple ARM) et de la version du noyau Linux (avec ou sans DTB, par exemple), il est possible que des registres et des mémoires tampons doivent être préparés pour le noyau. Dans un cas, il y avait également une initialisation matérielle effectuée par U-Boot qui devait être répliquée.

[~ # ~] addenda [~ # ~]

Je sais que u-boot a besoin d'un noyau au format uImage.

Cela est vrai pour toutes les versions de U-Boot qui ont uniquement la commande bootm .
Mais les versions les plus récentes de U-Boot pourraient également avoir la commande bootz permettant de démarrer une image zImage.

100
sawdust