Was ist der Unterschied zwischen ihnen?
Image : Die generische binäre Linux-Kernel-Image-Datei.
zImage : Eine komprimierte Version des Linux-Kernel-Images, die sich selbst extrahiert.
uImage : Eine Image-Datei mit einem U-Boot-Wrapper (vom Dienstprogramm mkimage installiert ), der den Betriebssystemtyp und die Loader-Informationen enthält.
Eine sehr verbreitete Praxis (z. B. das typische Makefile des Linux-Kernels) ist die Verwendung einer zImage-Datei. Da eine zImage-Datei sich selbst extrahiert (dh keine externen Dekomprimierer benötigt), würde der Wrapper anzeigen, dass dieser Kernel "nicht komprimiert" ist, obwohl dies tatsächlich der Fall ist.
Beachten Sie, dass der Autor / Betreuer von U-Boot die (weit verbreitete) Verwendung eines zImage in einem uImage für fragwürdig hält:
Eigentlich ist es ziemlich dumm, ein zImage in einem uImage zu verwenden. Es ist viel besser, ein normales (unkomprimiertes) Kernel-Image zu verwenden, es mit nur gzip zu komprimieren und dieses als Poayload für mkimage zu verwenden. Auf diese Weise führt U-Boot die Dekomprimierung durch, anstatt jedem Kernel-Image einen weiteren Komprimierer hinzuzufügen.
(zitiert aus https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html )
Welche Art von Kernel-Image muss ich verwenden?
Sie können wählen, wofür Sie programmieren möchten.
Aus Gründen der Speicherersparnis sollten Sie wahrscheinlich ein komprimiertes Bild dem unkomprimierten vorziehen.
Beachten Sie, dass das Ausführen des Kernels (vermutlich des Linux-Kernels) mehr beinhaltet als nur das Laden des Kernel-Images in den Speicher. Abhängig von der Architektur (z. B. ARM) und der Linux-Kernelversion (z. B. mit oder ohne DTB) müssen möglicherweise Register und Speicherpuffer für den Kernel vorbereitet werden. In einem Fall gab es auch eine Hardware-Initialisierung, die U-Boot durchführte und die repliziert werden musste.
NACHTRAG
Ich weiß, dass U-Boot einen Kernel im uImage-Format benötigt.
Dies gilt für alle Versionen von U-Boot, die nur den Befehl bootm haben .
Neuere Versionen von U-Boot können jedoch auch den Befehl bootz enthalten , mit dem ein zImage gestartet werden kann.