Подтвердить что ты не робот

Изображение vs zImage vs uImage

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

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

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

4b9b3361

Ответ 1

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

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

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

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


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

На самом деле это довольно глупо использовать zImage внутри uImage. это гораздо лучше использовать нормальное (несжатое) изображение ядра, сжать его используя только gzip, и используйте это как poayload для mkimage. Сюда U-Boot делает uncompresiong вместо включения еще одного uncompressor с каждым изображением ядра.

(цитируется https://lists.yoctoproject.org/pipermail/yocto/2013-October/016779.html)


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

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

ДОПОЛНЕНИЕ

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

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