Какой дистрибутив лучше использовать для вашей embedded системы?

в 9:16, , рубрики: armbian, buildroot, linux, openwrt. yocto, Настройка Linux, Разработка под Linux

Какой дистрибутив лучше использовать для embedded систем. Этот вопрос является актуальным на сегодняшний день.

Существует три актуальных подхода для решения этой задачи:

  1. Использовать готовый дистрибутив для вашего одно платного компьютера(Armbian, Openwrt и т.д.)
  2. Собрать и настроить свой дистрибутив с помощью систем сборок(Buildroot/Yocto и т.д.).
  3. Использовать свою связку bootloader (u-boot) + ядро(kernel) + rootfs (busybox).

Если кто знает еще, напишите пожалуйста в комментариях.

Готовые дистрибутивы

Я считаю использовать готовый дистрибутив это самый простой и легкий путь. Вы можете скачать готовый образ или сбилдить свой. Сборка своего образа Armbain не всегда является гибкой, т.к вы не можете выбрать любую версия ядра Linux, а использовать только предоставленные.

Следует также ответить главное достоинство готовых дистрибутивов — это их стабильность.
Для начинающих, я бы рекомендовал данные дистрибутивы.

Какой дистрибутив лучше использовать для вашей embedded системы? - 1
Armbian — это популярный дистрибутив Linux, доступный для самых разных устройств ARM: Orange Pi, Banana Pi, Odroid и т.д … Он основан на Ubuntu и/или Debian.

www.armbian.com

Какой дистрибутив лучше использовать для вашей embedded системы? - 2

OpenWrt — встроенная операционная система, основанная на ядре Linux, и предназначенная, в первую очередь, для домашних маршрутизаторов. Основные компоненты включают в себя ядро Linux, util-linux, uClibc или musl и BusyBox. Размер всех компонентов оптимизирован в связи с тем, что в большинстве домашних маршрутизаторов сильно ограничен объём памяти.

От себя добавлю, хорошо подойдет для плат с wi-fi на борту (Например Orange Pi Zero).

openwrt.org

Системы сборки

Гланым достоинством систем сборок является, то что вы можете собрать минимальный и гибкий Linux для встраиваемых (embedded) систем.

BuildRoot

Какой дистрибутив лучше использовать для вашей embedded системы? - 3

Buildroot — это система сборки дистрибутивов для встраиваемых систем. Она поддерживает кучу плат и результатом ее работы становятся собранные загрузчик, ядро и образ
файловой системы.

Что оно позволяет собрать buildroot для вашей системы:

  • образ системы;
  • данная система позволяет выбрать версию ядра — любую.
  • можете добавить любые патчи и установить любые программы.
  • гибкая конфигурация утилит ( например, busyBox, bash и т.д.)

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

Отличая такой сборки, например, от сборки Armbian:

  • собирается дистрибутив (Debian или Ubuntu), а пользовательский гибко настроенный Linux.
  • минимального размер сборки.
  • выбор любой версии ядра.

buildroot.org

3. Использование свой связки:

Для этого нам нужен:

  • Cross compiler (Например, Linaro);
  • Bootloader (Например, U-boot);
  • Kernel;
  • RootFs (Например, Busybox).

Итак поехали.
Так мы будем собирать локально на своей машине нам нужен кросс компилятор, например linaro. Кросс компилятор поможет на архитектуре x86, собрать наш дистрибутив под целевую платформу ARM.

www.linaro.org

Далее необходимо собрать bootloader.

Bootloader (U-Boot) — самый популярный bootloader для ARM, является U-boot. Главной задачей bootloader является загрузка ядра Linux Kernel. Так же вы можете использовать, например barebox или другой.

www.denx.de/wiki/U-Boot

Какой дистрибутив лучше использовать для вашей embedded системы? - 4
Далее. Нужно собрать ядро, на выходе мы должны получить образ ядра и device tree для нашей целевой платформы.

www.kernel.org

RootFs — это корневая файловая система которую примонтирует Kernel после загрузки. Рекомендую использовать Busybox.

Какой дистрибутив лучше использовать для вашей embedded системы? - 5

busybox.net

Заключение

Я не говорю, что есть плохие или хорошие подходы. Каждый имеет свои достоинства и недостатки. Это зависит от вашей задачи и какой результат вам необходимо получить.

Автор: alex_modyk

Источник


* - обязательные к заполнению поля