Vmlinux peut-il être utilisé à la place de uImage?

9

Je veux utiliser une image de noyau non compressée et démarrer le BeagleBoard. En général, j'utilise uImage pour démarrer le noyau qui est au format compressé. Comment utiliser une image de noyau non compressée?

Sharanya
la source
Vous utilisez U-Boot comme chargeur de démarrage, non?
Gilles 'SO- arrête d'être méchant'
Oui! Est-il possible d'utiliser uboot?
Sharanya

Réponses:

7

Pour autant que je sache, U-Boot ne peut pas démarrer directement une image ELF «brute» ( vmlinux). Vous devez le transformer au uImageformat, qui contient le comprimé vmlinuxplus quelques octets supplémentaires de métadonnées qui décrivent l'adresse de chargement du noyau. U-Boot FAQ 2.19 explique comment générer uImage; c'est assez simple, en utilisant l' mkimageutilitaire dans l'arborescence des sources U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Vous devrez peut-être des paramètres supplémentaires indiquant l'adresse de chargement.)

Gilles 'SO- arrête d'être méchant'
la source
1
La décompression de l'uImage pendant le démarrage prend un certain temps. Je dois minimiser cela. J'ai donc pensé pourquoi ne pas essayer avec le fichier brut non compressé vmlinux.
Sharanya
3
L'effet que vous souhaitez obtenir peut être contraire à celui souhaité. Le temps de décompression est généralement inférieur au temps de copie des données à partir du flash.
Maciej Kucia
3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Remplacez gzip dans l'exemple ci-dessus par aucun , et vous créerez une image non compressée compatible u-Boot.

Jim Davis
la source
1

Si vous utilisez Buildroot, sélectionnez un uImagefichier de sortie du noyau ( BR2_LINUX_KERNEL_UIMAGE=y). Compilez normalement et Buildroot créera également un vmlinuxfichier dans une étape intermédiaire. Bien que le vmlinuxfichier ne soit pas copié dans le /output/imagesrépertoire, il peut être trouvé dans ./output/build/linux-custom/(ou en exécutant find . -name "vmlinux").

spearson
la source