Ich möchte ein unkomprimiertes Kernel-Image verwenden und das BeagleBoard booten. Im Allgemeinen verwende ich uImage, um den Kernel zu starten, der im komprimierten Format vorliegt. Wie verwende ich ein unkomprimiertes Kernel-Image?
Ich möchte ein unkomprimiertes Kernel-Image verwenden und das BeagleBoard booten. Im Allgemeinen verwende ich uImage, um den Kernel zu starten, der im komprimierten Format vorliegt. Wie verwende ich ein unkomprimiertes Kernel-Image?
Antworten:
Soweit ich weiß, kann U-Boot ein "rohes" ELF-Image ( vmlinux) nicht direkt booten . Sie müssen es in das uImageFormat umwandeln, das die komprimierten vmlinuxund einige zusätzliche Bytes an Metadaten enthält, die die Kernel-Ladeadresse beschreiben. In den U-Boot-FAQ 2.19 wird das Generieren erläutert uImage. Es ist ziemlich einfach, das mkimageDienstprogramm im U-Boot-Quellbaum zu verwenden:
mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage
(Möglicherweise benötigen Sie zusätzliche Parameter, die die Ladeadresse angeben.)
Wenn Sie Buildroot verwenden, wählen Sie eine uImageKernel-Ausgabedatei ( BR2_LINUX_KERNEL_UIMAGE=y) aus. Normal kompilieren und Buildroot erstellt vmlinuxin einem Zwischenschritt auch eine Datei. Während die vmlinuxDatei nicht in das /output/imagesVerzeichnis kopiert wird, kann sie in ./output/build/linux-custom/(oder durch Ausführen find . -name "vmlinux") gefunden werden.