LINUX.ORG.RU

Система для сборки прошивок для встройки

 , ,


1

3

Всех приветствую.

Хотел обсудить один вопрос. А именно система для сборки прошивок.

Есть много приборов где есть прошивка на базе линукса. У приборов есть архитектура проца (например 3 разных). Разные версии железа. Разный функционал. Есть варианты, когда один и тот же функционал может быть реализован на разном железе. А бывает что на одном железе делают разный функционал (да, это про fpga).

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

Как я себе это вижу.

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

Есть некий прибор с заданной архитектурой, версией железа и потребным функционалом. Пишем некий конфиг, в котором указываем, какие компоненты нам нужны, каких версий и т.д. Из исходников собираются нужные бинарники нужных версии, конфигурации и архитектуры. Все это складывается в какие-то пакеты и хранятся в системе управления пакетами. Потом говорим, чтобы по вышеупомянутому конфигу собралась прошивка из указанных пакетов. Ну типа сделали образ рутфс, и туда все нужные пакеты развернулись (может даже с зависимостями).

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

Я не все потребности озвучил, но это пока самые главные.

Резюмирую немного главное:

  1. сборка из исходников с заданной версией, архитектурой, конфигом
  2. сборка из git репы, с заданным тегом, архитектурой, конфигом
  3. хранение в централизованном хранилище
  4. централизованное хранение конфигов для сборки прошивки из пакетов для железки и ее версии
  5. сборка любой версии прошивки в любой момент из пакетов

И вот теперь вопрос. А что в мире уже придумали на такой случай?

Что я уже видел-гуглил.

  • билдрут - простяцкая, быстрая, очень скудный функционал.
  • йокто - монструозная, нужно разбираться, но очень гибкая и в целом похоже то, что надо (концепция слоев, рецепты, метаданные и т.д.). Неясно насчет пакетирования и хранения.
★★★★★
Ответ на: комментарий от AlexVR

Но вопрос должен ставиться не как запихивание старых толчейнов и библиотек в buildroot или yocto.

К сожалению пока вопрос именно такой - «как запихать в…»

У меня уже есть полный комплект исходников с конфигами и патчами из которых собирается более 150 прошивок. Мне нужно все это аккуратно перенести из самопальной системы сборки в «стандартную». При этом получить, возможность промежуточной сборки, хранения и раздачи бинарных артефактов (пакетов) из которых потом можно уже собирать образы. Это главное условие. И еще, хранилище этих артефактов должно быть удаленное. И должна быть нормальная дедупликация.

Комплект ПО и тулчейнов у меня уже намоленый и оттестированный. Именно поэтому я не готов перетрясать весь этот комплект чтобы он стал более похожий на то, что из коробки предоставляет buildroot или yocto (или что-то еще). В будущем, да, было бы неплохо все это привести к единым версиям всех компонентов и инструментарий должен этому способствовать. Но это следующий этап.

Я в целом понял, что все упомянутые системы позволяют сделать то, что мне надо (в том или ином виде). Сейчас я хочу понять насколько просто это можно сделать, как это поддерживать, удобно ли пользоваться. Но тут похоже, пока не попробуешь не поймешь. Буду пробовать. И на этом этапе бы пригодились полезные рецепты, чтобы не бежать марафон по граблям с самого начала.

yax123 ★★★★★
() автор топика
Ответ на: комментарий от Jullyfish

Использовать или нет дело каждого. Лишь бы палки в колёса не совали.

AlexVR ★★★★★
()
Ответ на: комментарий от yax123

Это

Мне нужно все это аккуратно перенести из самопальной системы сборки в «стандартную».

и это

Комплект ПО и тулчейнов у меня уже намоленый и оттестированный.

Уже конфликтуют.

У buildroot уже проверенный временем SDK. Который обновляется от версии к версии.

buildroot – это простой инструмент для запуска минимального образа на устройстве. Он часто используется для запуска платы. Ему не надо кеширование сборки пакетов, т.к. образ маленький и его собрать не долго. Для СУЩЕСТВЕННОГО ускорения сборки, у него есть возможно предварительной сборки SDK.

Используя buildroot + BR2_EXTERNAL получаешь очень аккуратный способ описания сборки 150 прошивок в едином стиле с «наследованием».

Пытаться поменять компиляторы и базовые библиотеки в buildroot? Такого не видел. Видел закостянелые форки, которые можно собрать только в виртуалке с ОС 20-летней давности.

При этом получить, возможность промежуточной сборки, хранения и раздачи бинарных артефактов (пакетов) из которых потом можно уже собирать образы. Это главное условие. И еще, хранилище этих артефактов должно быть удаленное. И должна быть нормальная дедупликация.

Хотеть можно многого. У Yocto аналогичное делается через sstate.

Но надо понимать что такое yocto.

Сейчас это три репы

  • bitbake – система сборки.
  • openembedded-core – минимальные слои для сборки.
  • meta-yocto – слои с дистрибутивом от yoctoproject.

На первых двух реально собрать мини-образ, без компонентов от yocto. И так некоторые делают.

Теоретически можно написать свой meta вместо openembedded-core и meta-yocto. Но это такой объём работы, что и года может не хватить.

чтобы не бежать марафон по граблям с самого начала.

Найдите версии buildroot или yocto/oe которые содержат близкие версии пакетов к вашим SDK. Ну не с нуля же они были сделаны.

Только надо понимать, что для сборки старых компиляторов, нужны старые версии ОС. Причём на столько старые, что только в VirtualBox их и можно запустить.

AlexVR ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.