Собственное ядро ​​Buildroot до 1 МБ

Я пытаюсь собрать минимальное ядро ​​размером менее 1 МБ с помощью Buildroot. Он предназначен для небольших плат с памятью qspi и базовыми функциями, ethernet, usb, spi и некоторыми GPIO. Базовый терминальный доступ через ssh и UART. Мои первые мысли: возможно ли вообще изменить ядро ​​.config с помощью linux-menuconfig, чтобы достичь этого размера.

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

Если кто-то может дать мне хорошее направление, как решить эту проблему, или даже указать некоторые инструменты и способы, как это сделать, было бы очень полезно.

Спасибо!


person Michal Gonda    schedule 09.06.2015    source источник
comment
Статья: Настройка встроенного Linux может вам помочь.   -  person alexander    schedule 09.06.2015
comment
@alexander спасибо. Я уже это проверил, и это больше связано с Yocto. Все еще очень информативно! Но я не совсем понимал, как применить его подход к buildroot. Возможно, я просто недостаточно знаком с buildroot, чтобы видеть ссылки. Также он перечисляет размеры модулей ядра и удаляет их, и я думаю, что довольно сложно не нарушить зависимости.   -  person Michal Gonda    schedule 09.06.2015
comment
Я отправил неполный ответ. Какой SOC вы используете? Так что я могу изучить исходники yocto и, возможно, порекомендовать что-нибудь еще.   -  person alexander    schedule 09.06.2015
comment
@alexander Я использую altera cyclone 5. Я тоже копаюсь в yocto, но мне кажется, что это слишком много, поэтому я переключился на buildroot. Может было ошибочное предположение: D   -  person Michal Gonda    schedule 09.06.2015


Ответы (2)


Если у вас есть рабочий корень сборки для вашей платы, то лучше продолжать с ним работать. Техника отключения опций ядра должна быть такой же. В статье он достиг ~ 0,7 МБ uImage, потеряв при этом много функциональности ( стр.40). Начал с минимального (голого) конфига (p27) и добавил блоки конфигов. Таким образом, вместо того, чтобы идентифицировать повторяющиеся части, вы можете создать как можно меньший uImage, который вы можете загрузить. Чем добавить к нему больше опций: ext2, serial и так далее. На самом деле эта работа требует серьезной проверки. И вы наверняка тормозите зависимости.

Конфиги ядра (рабочий и новый) можно сравнить с помощью diff -Naur, чтобы вы могли видеть, что изменилось.

Не по теме:

Похоже, yocto официально поддерживается альтерой. здесь содержат инструкции по сборке altera-image-minimal. Если вас устраивает его размер, используйте его и не тратьте время на минимизацию uImage. Если вам нужно установить в него дополнительные пакеты, вы можете легко его расширить.

И здесь приведены инструкции по созданию Angstrom (дистрибутив на основе yocto). Вы можете создать собственный образ на основе console-image-minimal.

Я использую Ангстрем в производстве. Надо сказать, с первого раза было действительно сложно использовать его.

person alexander    schedule 09.06.2015

Собираете ли вы ядро ​​с помощью buildroot, на самом деле не имеет значения. Важно настроить его так, чтобы он умещался в 1 МБ. Когда вы собираете ядро ​​из buildroot, вы можете сделать это с помощью make linux-menuconfig, как вы упомянули.

Тем не менее, получить ядро ​​меньше 1 МБ будет довольно сложно. Бифф однажды сделал это для платформы на базе x86, bifferboard.. Но это было без сети или USB.

Вы можете обратиться к руководству по настройке размера ядра, в котором есть ссылки на некоторые исправления для уменьшения размера. Но уже пару лет не обновлялся.

person Arnout    schedule 10.06.2015
comment
Эта конфигурация двухкоординатной доски имеет сеть и USB: github.com/bifferos/bb/blob/master/tiny/linux-2.6.37.6/.conf‌ ig - person Keeely; 08.09.2016