OpenEmbedded (OE) — это фреймворк автоматизации сборки и среда кросс-компиляции , используемые для создания дистрибутивов Linux для встраиваемых устройств . [2] Фреймворк разработан сообществом OpenEmbedded, которое было официально создано в 2003 году. OpenEmbedded — это рекомендуемая система сборки проекта Yocto , рабочей группы Linux Foundation , которая помогает коммерческим компаниям в разработке систем на базе Linux для встраиваемых продуктов.
Система сборки основана на BitBake . Файл конфигурации BitBake, называемый рецептом, определяет различную информацию, такую как зависимости и расположения исходного кода, как собрать пакет и как установить и удалить скомпилированный пакет. Инструменты OpenEmbedded используют эти рецепты для извлечения и исправления исходного кода, компиляции и компоновки двоичных файлов, создания двоичных пакетов ( ipk , deb , rpm ) и создания загрузочных образов .
Исторически рецепты OpenEmbedded хранились в одном репозитории, а метаданные были структурированы как то, что сейчас называется «OpenEmbedded-Classic». Начиная с 2010 года структура была изменена для лучшей поддержки постоянно растущего числа рецептов. Метаданные рецептов были разделены на несколько слоев. Самый нижний слой, который включает независимые от платформы и дистрибутива метаданные, называется «OpenEmbedded-Core». [3] Специфичные для архитектуры, приложения и зависимые от дистрибутива инструкции применяются в соответствующих целевых слоях поддержки, которые могут переопределять или дополнять инструкции из нижних слоев. Кроме того, изменения в рецептах на уровне ядра теперь управляются с помощью модели pull: вместо того, чтобы фиксировать свои изменения непосредственно в репозитории (как это было раньше), разработчики теперь отправляют исправления в список рассылки. После одобрения исправления объединяются (извлекаются) сопровождающим. [3]
Фреймворк OpenEmbedded можно установить и автоматически обновить через Git . [2]
OpenEmbedded Image Creator, называемый Wic, можно использовать для создания файлов образов дисков; как правило, с расширением .wic
.
Проект OpenEmbedded , созданный Крисом Ларсоном, Майклом Лауэром и Хольгером Шуригом, объединил достижения OpenZaurus с вкладами таких проектов, как Familiar Linux и OpenSIMpad , в общую кодовую базу. OpenEmbedded заменил эти проекты и использовался для сборки любого из них из той же кодовой базы.
OpenEmbedded-Core (OE-Core) появился в результате слияния проекта Yocto с OpenEmbedded. [4] С тех пор все рецепты пакетов поддерживаются через OpenEmbedded-Core.
OpenEmbedded-Core адаптировал эту слоистую структуру при слиянии с Yocto, и со временем были добавлены новые записи слоев. [5] [6] Слои представляют собой структуру, которая носит исключительно декларативный характер. Конкретные записи более строги в плане принятия решения о том, какая запись предоставляет какие пакеты. Обзор слоев доступен по адресу: layers.openembedded.org/layerindex/branch/master/layers/
В OpenEmbedded-Classic конфигурации от Base- до UI-Layer могут быть дополнены различными дистрибутивами Linux . Следующий список доступен для OpenEmbedded:
Поддерживаются различные устройства: [10]