Kann vmlinux anstelle von uImage verwendet werden?

9

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?

Sharanya
quelle
Sie verwenden U-Boot als Bootloader, richtig?
Gilles 'SO - hör auf böse zu sein'
Ja! Ist es möglich mit uboot?
Sharanya

Antworten:

7

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.)

Gilles 'SO - hör auf böse zu sein'
quelle
1
Das Dekomprimieren des uImage während des Startvorgangs dauert einige Zeit. Ich muss das minimieren. Also dachte ich mir, warum ich es nicht mit der unkomprimierten Rohdatei vmlinux versuche.
Sharanya
3
Der Effekt, den Sie erzielen möchten, ist möglicherweise entgegengesetzt zum beabsichtigten. Die Dekomprimierungszeit ist normalerweise kürzer als die Zeit zum Kopieren von Daten aus Flash.
Maciej Kucia
3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Ändern Sie gzip im obigen Beispiel in none , und Sie erstellen ein U-Boot-kompatibles unkomprimiertes Image.

Jim Davis
quelle
1

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.

Speer
quelle