Яка різниця між ними?
Зображення : загальний файл двійкового образу ядра Linux.
zImage : стиснута версія образу ядра Linux, що саморозпаковується.
uImage : файл зображення, який має обгортку U-Boot (встановлену утилітою mkimage ), що включає інформацію про тип ОС та завантажувач.
Дуже поширеною практикою (наприклад, типовий файл ядра Linux Makefile) є використання файлу zImage. Оскільки файл zImage саморозпаковується (тобто не потребує зовнішніх декомпресорів), обгортка вказуватиме, що це ядро "не стиснуте", хоча воно насправді є.
Зверніть увагу, що автор / супровідник U-Boot вважає сумнівним (поширене) використання використання zImage всередині uImage:
Насправді досить глупо використовувати zImage всередині uImage. Набагато краще використовувати звичайне (нестиснуте) зображення ядра, стиснути його, використовуючи просто gzip, і використовувати це як poayload для mkimage. Таким чином U-Boot виконує декомпресію, замість того, щоб включати ще один декомпресор з кожним образом ядра.
(цитується за посиланням 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.