Image vs zImage vs uImage


в чем разница между ними?

Я знаю, что u-boot нуждается в ядре в формате uImage.

система, которую я использую, сначала загружается с загрузчика этапа 1, а затем вызывает u-boot. Я хочу отказаться от u-boot и напрямую загрузиться с загрузчика stage 1. Какой тип образа ядра я должен использовать?

1 59

1 ответ:

в чем разница между ними?

изображения: общий двоичный файл образа ядра Linux.

zImage: сжатая версия образа ядра Linux, которая является самораспаковывающейся.

uImage: файл образа с оболочкой U-Boot (устанавливается mkimage утилита), которая включает в себя информацию о типе ОС и загрузчика.
Очень распространенная практика (например, типичная Linux kernel Makefile) должен использовать файл zImage. Поскольку файл zImage является самораспаковывающимся (т. е. не требует внешних распаковщиков), оболочка будет указывать, что это ядро "не сжато", даже если оно на самом деле есть.


обратите внимание, что автор / сопровождающий U-Boot считает (широко распространенное) использование zImage внутри uImage сомнительным:

на самом деле это довольно глупо использовать zImage внутри uImage. Это гораздо лучше использовать обычный (несжатый) образ ядра, сжать его используя только gzip, и используйте это как poayload для mkimage. Именно такой образ Загрузчика не uncompresiong, а не в том числе еще один распаковка с каждым образом ядра.

(цитата из https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html)


какой тип образа ядра я должен использовать?

вы можете выбрать все, что вы хотите запрограммировать для.
Для экономии памяти вам, вероятно,следует выбрать сжатый образ вместо несжатого.
Помните, что выполнение ядра (предположительно ядра Linux) включает в себя больше, чем просто загрузку образа ядра в память. В зависимости от архитектуры (например, ARM) и версии ядра Linux (например, с DTB или без него) существуют регистры и буферы памяти, которые могут быть подготовлены для ядра. В одном случае была также аппаратная инициализация, что U-Boot выполненный, который должен был быть реплицирован.

дополнительное соглашение

Я знаю,что u-boot нуждается в ядре в формате uImage.

это точно для всех версий U-Boot, которые имеют только bootm.
Но более поздние версии U-Boot также могут иметь bootz команда, которая может загрузить zImage.