Pull to refresh

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

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

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

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

Если кто знает еще, напишите пожалуйста в комментариях.
UPDATE.
Проект OpenWRT это и система сборки (это не buildroot), так и проект предоставляющий готовые собранные образы для вашей целевой платы.


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


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

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


Armbian — это популярный дистрибутив Linux, доступный для самых разных устройств ARM: Orange Pi, Banana Pi, Odroid и т.д … Он основан на Ubuntu и/или Debian.
www.armbian.com



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

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

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


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

BuildRoot



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


Далее. Нужно собрать ядро, на выходе мы должны получить образ ядра и device tree для нашей целевой платформы.
www.kernel.org

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


busybox.net

Заключение


Я не говорю, что есть плохие или хорошие подходы. Каждый имеет свои достоинства и недостатки. Это зависит от вашей задачи и какой результат вам необходимо получить.
Tags:
Hubs:
Total votes 28: ↑17 and ↓11+6
Comments15

Articles