Можно ли использовать vmlinux вместо uImage?

9

Я хочу использовать несжатый образ ядра и загрузить BeagleBoard. Обычно я использую uImage для загрузки ядра в сжатом формате. Как мне использовать несжатый образ ядра?

Sharanya
источник
Вы используете U-Boot в качестве загрузчика, верно?
Жиль "ТАК - перестань быть злым"
да! Возможно ли использовать Uboot?
Шаранья

Ответы:

7

Насколько я знаю, U-Boot не может напрямую загрузить «сырой» образ ELF ( vmlinux). Вам необходимо преобразовать его в uImageформат, который содержит сжатые vmlinuxплюс несколько дополнительных байтов метаданных, описывающих адрес загрузки ядра. U-Boot FAQ 2.19 объясняет, как генерировать uImage; это довольно просто, используя mkimageутилиту в дереве исходников U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Вам могут понадобиться дополнительные параметры, указывающие адрес загрузки.)

Жиль "ТАК - перестань быть злым"
источник
1
Распаковка uImage во время загрузки занимает некоторое время. Мне нужно минимизировать это. Поэтому я подумал, почему бы мне не попробовать несжатый необработанный файл vmlinux.
Шаранья
3
Эффект, которого вы хотите достичь, может быть противоположным предполагаемому. Время распаковки обычно меньше времени копирования данных с флэш-памяти.
Maciej Kucia
3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Измените gzip в приведенном выше примере на none , и вы создадите несжатый образ, совместимый с u-Boot.

Джим Дэвис
источник
1

Если вы используете Buildroot, выберите uImageфайл вывода ядра ( BR2_LINUX_KERNEL_UIMAGE=y). Скомпилируйте нормально, и Buildroot также создаст vmlinuxфайл на промежуточном этапе. Пока vmlinuxфайл не скопирован в /output/imagesкаталог, его можно найти ./output/build/linux-custom/(или запустить find . -name "vmlinux").

spearson
источник