Buildroot не генерирует сжатый образ ядра - PullRequest
1 голос
/ 17 мая 2019

Я успешно использовал buildroot (v. 2019.05) для сборки u-boot и Kernel и смог загрузить его вместе.

Проблема в том, что, хотя я выбрал режим сжатия Kernel для gzip все, что я получаю, это несжатый Image файл.

В выходном каталоге (и в Linux) есть только файл Image, тогда как Image.gz.

Как сгенерировать Image.gz из / вместо Image?

Ответы [ 3 ]

2 голосов
/ 20 мая 2019

На arm64, Linux не поддерживает самораспаковывающееся сжатие . Для этого он использует загрузчик.

Система сборки Linux имеет цель Image.gzImage.bz2 и т. Д.), Но она не делает ничего, кроме вызова gzip на Image (сравните это с zImage, который добавляет само экстрактор).

Поскольку сжатие легко выполнить вне системы сборки ядра, и поскольку существует так много возможных компрессоров, Buildroot не предоставляет для них опций. Однако можно выбрать произвольное имя изображения (BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM), а затем установить BR2_LINUX_KERNEL_IMAGE_TARGET_NAME на Image.gz. Кроме того, вы можете выполнить сжатие в сценарии после сборки.

Не забудьте убедиться, что загрузчик может распаковать этот алгоритм.

1 голос
/ 17 мая 2019

В buildroot помимо выбора механизма сжатия вы также можете выбрать выходной формат для образа ядра (uImage, zImage, vmlinux ...).

Вы должны найти один из них в вашем output/images/или в каталоге сборки вашего ядра.

При использовании U-boot вы, вероятно, захотите использовать uImage или zImage.См. этот вопрос .Оба они будут сжаты, если выбраны в конфигурации ядра (CONFIG_KERNEL_GZIP).

Во время загрузки несжатый размер ядра регистрируется в начале.Вы можете сравнить его с размером вашей файловой системы.

## Booting kernel from Legacy Image at 10000000 ...
   Image Name:   Linux-4.14.73-ltsi
   Created:      2019-05-14  11:55:16 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4684016 Bytes = 4.5 MiB
   Load Address: 00008000
   Entry Point:  00008000
...
1 голос
/ 17 мая 2019

В соответствии с инструментом настройки пакета Linux :

Этот выбор просто гарантирует, что будут собраны правильные инструменты хоста.Фактическое сжатие для ядра должно быть выбрано в меню конфигурации ядра.

Убедитесь, что вы выбрали опцию сжатия, используя make linux-menuconfig тоже.

...