Question

J'essaie de compiler un noyau (version modifiée de 2.6.32.9, trouvée ici https://github.com/rabeeh/linux-2.6.32.9). Je fais la compilation sur un système de bras émulé (Qemu) (oui, je devrais probablement croix, mais c'est un sujet différent) exécutant Ubuntu Core (https://wiki.ubuntu.com/core) et le noyau (vmlinuz ) d'Ubuntu 11.04 (téléchargé à partir de http://ports.).

Après avoir coulé make bzImage, Je regarde dans le arch/arm/boot dossier, et ne trouvez qu'un fichier appelé zimage. J'ai essayé d'utiliser ce Zimage au lieu du VMLinuz que j'ai téléchargé sur Ubuntu.com dans Qemu, mais cela ne fonctionne pas, affiche simplement un écran noir. Je suppose que Zimage n'est pas la même chose que Bzimage, c'est ce que je pense que vmlinuz (à en juger par différents articles sur Internet).

Donc, quelques questions:

  1. Pourquoi pas make bzImage produire un bzimage / vmlinuz?
  2. Puis-je convertir un VMLinux en un VMLinUz en utilisant par exemple Mkimage (il y a beaucoup de guides à l'opposé ...)?

Merci

Était-ce utile?

La solution

J'obtiens le résultat que vous décrivez en demandant à Qemu d'imiter un CPU différent de l'ARM926EJ-S. Mais le démarrage de VolyatilePB avec le CPU par défaut fonctionne. J'ai compilé mon noyau et j'ai compilé tous les pilotes dedans (donc je n'utilise pas initrd).

Téléchargez simplement 100 Mo ARM-EABI Toolchain de http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ (C'est gratuit mais ils veulent votre e-mail, comme le compilateur Intel x86). Il a un installateur, dites simplement "Suivant" jusqu'à ce qu'il soit fait, comme sur Windows. Ajoutez ensuite le répertoire bac à votre chemin:

export PATH=~/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/:$PATH

Puis retournez à votre source de noyau et faites

make ARCH=arm CROSS_COMPILE=arm-none-eabi- menuconfig
make ARCH=arm CROSS_COMPILE=arm-none-eabi- zImage modules

Tu peux faire

sudo make ARCH=arm CROSS_COMPILE=arm-none-eabi- INSTALL_MOD_PATH=path_to_arm_root modules_install

Si vous pouvez atteindre votre système de fichiers ARM à partir de l'hôte. Si vous utilisez NFS Root, c'est trivial, mais si vous utilisez une image de disque, vous devez soit:

  • Utilisez une image de disque brut et KPartx (dépend de votre noyau hôte ayant DM-Multipath) ou
  • Qemu-NBD qui prend en charge QCOW (et dépend de la prise en charge du périphérique de blocage réseau)

Pour démarrer dans Qemu avec un disque, vous avez besoin des bons pilotes (SYM53C8XX SCSI). Le defconfig polyvalent ne les sélectionne pas.

Autres conseils

La bzImage Le nom de fichier et la cible de marque était à l'origine spécifique à x86 (Big Zimage). Beaucoup de chargeurs de démarrage sur des architectures qui ne sont pas égaux à Baremetal-X86 (SPARC, PPC, IA64, etc. et également Xen sur *) vmlinux (ou l'une de ses formes comprimées, par exemple vmlinux.gz, aka zimage). Je suppose que certains responsables ont simplement ajouté Bzimage comme nom cible car ils voulaient également avoir la folie x86 sur leur arc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top