- Проект Yocto
- Русские Блоги
- Yocto основные понятия и введение
- Подробный Йокто
- Существительное объяснение
- 2. Архитектура Йокто
- 3. Подробный файл конфигурации
- Запускаем Yocto Linux на виртуальной машине
- Предварительные требования
- Подготовка компьютера
- Шаг первый. Настройка рабочей директории
- Шаг второй. Настройка переменных окружения
- Шаг третий. Настройка BitBake
- Итоги
Проект Yocto
Оригинал: The Yocto Project
Автор: Elizabeth Flanagan
Дата публикации: 23 Октября 2012 г.
Перевод: А.Панин
Дата перевода: 14 Июля 2013 г.
Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons . С русским вариантом лицензии можно ознакомиться здесь .
Проект Yocto является проектом с открытым исходным кодом, выступающим в роли отправной точки для разработчиков встраиваемых систем на основе Linux в ходе создания специализированных дистрибутивов программных продуктов вне зависимости от применяемого для этого аппаратного обеспечения. Благодаря спонсорской помощи со стороны организации Linux Foundation, проект Yocto является системой, функционально превосходящей простые системы сборки. Он предоставляет в распоряжение разработчиков инструменты, процессы, шаблоны и методы для быстрого создания и внедрения продуктов в рамках рынка встраиваемых систем. Одним из ключевых компонентов проекта Yocto является система сборки Poky Build system. Так как Poky является большой и сложной системой, мы сфокусируем свое внимание на одном из ее ключевых компонентов с названием BitBake. BitBake является инструментом для сборки, созданным под впечатлением от системы Portage из дистрибутива Gentoo и используемым как проектом Yocto, так и сообществами OpenEmbeeded для работы с метаданными и создания образов Linux-систем на основе их исходного кода.
В 2001 году компания Sharp Corporation представила КПК SL-5000 с названием Zaurus, работающий под управлением дистрибутива Linux для встраиваемых систем с названием Lineo. Спустя некоторое время после представления КПК Zaurus, Chris Larson основал проект OpenZaurus Project, направленный на создание дистрибутива на основе Linux для замены существующего в SharpROM и использующий систему сборки с названием buildroot. После создания проекта сторонние участники начали добавлять поддержку новых пакетов программного обеспечения наряду с дополнительными возможностями сборки дистрибутивов для других устройств незадолго до того, как система сборки проекта OpenZaurus начала давать сбои. В январе 2003 года в сообществе началось обсуждение возможности создания новой системы сборки, поддерживающей модель функционирования сообщества в рамках стандартной системы сборки дистрибутивов на основе Linux для встраиваемых систем. В конечном счете это привело к созданию проекта OpenEmbedded. Chris Larson, Michael Lauer и Holger Shurig начали работу в рамках проекта OpenEmbedded с портирования сотен пакетов проекта OpenZaurus для работы с новой системой сборки.
Благодаря этой работе был создан проект Yocto. В основе проекта лежала система сборки Poky, созданная Richard Purdle. Проект начинал свое существование в виде стабилизированной ветки проекта OpenEmbedded, используя основной набор сотен рецептов проекта OpenEmbedded для сборки под ограниченное количество архитектур. Со временем проекты были объединены в нечто большее, чем система сборки программного обеспечения для встраиваемых систем и сформировали завершенную платформу для разработки программного обеспечения с плагином для среды разработки Eclipse, заменой инструмента fakeroot и возможностью работы с образами на основе QEMU. Примерно в ноябре 2010 года организация Linux Foundation выступила с заявлением о том, что работа над системой будет продолжаться в рамках проекта Yocto, получающего спонсорскую поддержку от Linux Foundation. После этого было установлено соглашение о том, что проекты Yocto и OpenEmbedded будут осуществлять координацию работы над ключевым набором метаданных пакетов, называемым OE-Core, комбинируя лучшие черты систем Poky и OpenEmbedded с увеличивающимися масштабами использования уровней для дополнительных компонентов.
Источник
Русские Блоги
Yocto основные понятия и введение
Подробный Йокто
Существительное объяснение
- Yocto: Yocto — название этого проекта с открытым исходным кодом, цель которого — помочь нам настроить нашу систему Linux.
- Poky: Poky имеет два значения. Первое значение — это система сборки, используемая для сборки Linux. Стоит отметить, что Poky — это просто концепция, а не сущность: она содержит инструменты BitBake, цепочки инструментов компиляции, BSP, множество пакетов или слоев. Poky можно рассматривать как Это суть Yocto, кроме того, Poky имеет другое значение: эталонный дистрибутив Linux по умолчанию, полученный с использованием системы Poky, также называется Poky (конечно, мы можем назвать этот дистрибутив произвольно). Два значения Poky не следует путать
- Метаданные: набор метаданных, так называемый набор метаданных — это описание и источник каждого базового элемента в выпуске
- Рецепты: файлы .bb / .bbappend, файлы рецептов, описывающие, где можно получить исходный код программного обеспечения, как настроить и как скомпилировать. Разница между bbappend и bb заключается в том, что bbappend основан на bb, и его функция заключается в дополнении и покрытии соответствующего файла bb, который аналогичен понятию «переписать»
- Класс: файл .bbclass
- Конфигурация: файл .conf, который является файлом конфигурации, мы можем использовать его для изменения метода сборки
- Слои: различные каталоги meta-xxx, которые классифицируют метаданные по слоям, что полезно для сопровождения проекта
- Bitbake: механизм выполнения задач для анализа и выполнения метаданных
-
Выход: различное изображение на выходе
Сводка: если для описания построения дистрибутива используется таблица приготовления, Yocto — название ресторана, Poky — кухня (и набор блюд, предоставленный в качестве справочного материала), Metadata — ресурс приготовления (.bb / .bbappend означает рецепт Подсказки, .conf указывает на лидера команды на кухне), Layers — это классификация рецептов (таких как рецепты Сычуани, кантонские рецепты), Bitbake — это повар, а Output — сервированный стол.
2. Архитектура Йокто
Предположим, что среда Yocto уже создана. Для получения подробной информации о конкретной операции и окружающей среде строительства YoctoСлучай использования Yocto
Нетрудно увидеть из каталога, что в основном несколько слоев
- meta-avi: Создано и поддерживается нами. Формулы, необходимые для AVI связанных проектов. Можно считать, что рецепты в этом каталоге универсальны и не зависят от платформы.
- meta-imx6-avi: Создано и поддерживается нами. Формула, необходимая для проекта avi платформы imx6
- meta-Exynos-avi: Создано и поддерживается нами. Формула, необходимая для проекта avi платформы Exynos
- meta-qt5-avi: Создано и поддерживается нами. Формула, требуемая qt5 в проекте avi
- meta-fsl-arm: официальные рецепты Freescale
- meta-openembedded: рецепт для открытого внедрения
- meta-qt5: qt5 официальные рецепты qt5
- Куча мета в поки: справочный рецепт, официально выпущенный Yocto Несмотря на то, что эти метаданные размещены в поки, они по-прежнему не влияют на использование, они имеют тот же статус, что и метас выше, как показано ниже.
Нетрудно видеть, что многие слои просто скопированы у нас, цель состоит в том, чтобы позаимствовать готовые рецепты (вы можете думать об этих слоях как о «библиотеках»), и мы действительно поддерживаем лишь несколько имен с помощью avi. Слои, и они зависят от тех, которые действуют как «библиотеки». Как показано ниже
- После введения слоя возникает вопрос, можете ли вы думать, что все эти слои включены? Ответ — нет, наш проект imx6_avi_super, очевидно, невозможно включить meta-Exynos-avi, слой, посвященный платформе Samsung.
- Выбор конкретного уровня отвечает за imx6_avi_super / sources / conf / bblayers.conf, и интуитивное расположение может быть отражено в предыдущем каталоге. Внимательно наблюдайте за файлом, фокус находится на переменной BBLAYERS, в ней есть несколько слоев, и эти слои включены. Нетрудно обнаружить, что нет мета-Exynos-avi, который просто доказывает, что когда мы настраивали среду разработки (repo sync), соответствующий Poky imx6_avi_super был извлечен из репозитория git.
- Эти слои в настоящее время включены, так что вы думаете, что все формулы в этих слоях также включены? Ответ — нет, невозможно поместить все пакеты в наш дистрибутив. В Yocto эта операция выбора и конфигурирования завершается несколькими файлами conf и bb.В общем наброске нет, что также является самым большим отличием от buildroot (buildroot использует конфигурацию набросков с помощью menuconfig). Можно понять, что Yocto — это «разделенная система», что, по словам императора, не может быть реализовано, и местные чиновники всех размеров имеют окончательное решение, а buildroot — это «централизованная система власти», а последнее слово имеет император.
- Как понять метод настройки Yocto? Это начинается с процесса настройки для распространения. Наша цель очень проста. Мы хотим получить три образа uboot, kernel и rootfs. Цель Yocto также очень проста. Он должен пройти конфигурацию первого уровня и постепенно сокращать формулу, пока мы не получим три изображения uboot, kernel и rootfs. , Какие рецепты требуются для каждого уровня, определяется файлом конфигурации (conf / bb), соответствующим этому уровню. Конфигурация более высокого уровня является более общей, а конфигурация более низкого уровня — более подробной. Если элементы конфигурации нижнего уровня являются дополнительными или конфликтуют с более высоким уровнем, содержимое нижнего уровня имеет преимущественную силу, и можно считать, что нижний уровень будет «перезаписывать» более высокий уровень. Это на самом деле похоже на правила дорожного движения
О строительном маршруте и процессе: для всей сборки дистрибутива, хотя рецепт каждого уровня определяется (conf / bb), выбор маршрута и направления каждого уровня определяется нашим конечным объектом bitbake, таким как наш последний bitbake avi-image-core Мы хотим получить rootfs.img, тогда:
- Первый шаг Poky будет начинаться с local.conf, вплоть до уровня, уровня, пока он не будет настроен на связку bbs, связанных с rootfs, и, наконец, сформирует полную формулу
- Затем получите ресурсы, необходимые для рецепта, такие как различные пакеты программного обеспечения, такие как исходный код ядра
- Наконец, скомпилируйте все ресурсы для нужного нам изображения
Наконец, поговорим о bitbake. Например, если мы хотим скомпилировать rootfs.img, используйте bitbake avi-image-core Это хорошо, но часто этот подход не принимается напрямую. В большинстве случаев мы напишем Makefile в каталоге проекта, который содержит различные функции, которые реализуются внутри инструкций bitbake
3. Подробный файл конфигурации
В предыдущем разделе кратко рассказывалось о том, как Yocto настраивает наш проект, этот раздел начинает анализ конкретных файлов конфигурации.
Источник
Запускаем Yocto Linux на виртуальной машине
В процессе разработки, например, для Intel Edison или Galileo, может случиться так, что нужного для экспериментов устройства под рукой не оказалось. Похожее происходит и тогда, когда «железо» есть, но установленная на нём ОС не поддерживает всех необходимых для проекта возможностей. Что делать?
Предварительные требования
Для того, чтобы успешно освоить это руководство, вам понадобится следующее:
- ОС Debian/Ubuntu (протестировано на Debian 8.2. amd64).
- Подключение к интернету.
- Как минимум 100 Гб свободного пространства на жёстком диске.
Подготовка компьютера
В качестве root-пользователя (или с использованием «sudo») выполните на компьютере следующую команду:
Примечание №1. Успешность выполнения этой команды зависит от версии Ubuntu/Debian, которой вы пользуетесь. Однако, вы вполне можете, для того, чтобы разрешить зависимости пакетов, воспользоваться «aptitude» и выполнить принудительную установку подходящих версий необходимых пакетов (например, такой командой: «aptitude install libsdl1.2-dev»).
Примечание №2. Для других дистрибутивов Linux, таких, как RedHat, CentOS, Fedora, SuSe, Gentoo, и так далее, мы бы посоветовали поискать подходящие версии вышеупомянутых пакетов с использованием соответствующего менеджера пакетов (например, zypper или yum).
Шаг первый. Настройка рабочей директории
Эти команды нужно выполнить в режиме обычного пользователя, root-привилегии не нужны.
Примечание №3. Здесь можно выбрать другую ветку релизов Yocto. В этом руководстве мы пользуемся Yocto Poky 2.0.14.0.0 (Jethro).
Примечание №4. Если вы хотите загрузить самый свежий релиз исходных кодов Yocto, можете обратиться к ветке master. При этом понадобится поменять пару команд из вышеприведённого листинга на следующие:
Примечание №5. Нужную ветку можно выбрать, используя её кодовое имя. Например, так:
Шаг второй. Настройка переменных окружения
Эта настройка очень проста, выполняется она с помощью скрипта от разработчиков Yocto.
После того, как вы запустите скрипт, и он успешно отработает, папка сборки станет новым рабочим пространством. Например, путь к этой папке может выглядеть так:
Шаг третий. Настройка BitBake
После исполнения скрипта из предыдущего шага был создан файл conf/local.conf .
Этот конфигурационный файл нужен для настройки BitBake, системы сборки Yocto (это центральный компонент Yocto Project).
Отредактируйте конфигурационный файл BitBake в любом текстовом редакторе, которым пользуетесь. Мы редактировали его в редакторе nano . Это – простой консольный текстовый редактор для Unix-сред. Запускается он так:
В конфигурационном файле раскомментируйте следующие строки:
Советуем собирать образы, включая в них все доступные дополнительные возможности. Хотя в результате файлы образов получаются немаленькими (около 8 Гб каждый), они включают в себя всё, что только можно, и, как результат, подходят для любых задач разработки.
Сохраните изменения в файле local.conf . В нашем случае это делается с помощью комбинации клавиш Ctrl+X. Теперь выполните следующие команды:
В ответ на них должен запуститься Hob (графический интерфейс для BitBake, основанный на GTK-2). Он приступит к проверке правильности настройки системы сборки.
Проверка настройки системы сборки
После проверки выберите из выпадающего меню, в качестве целевой системы, qemux86.
Выбор целевой системы
Подождите, пока Hob завершит разбор рецептов BitBake и сгенерирует дерево зависимостей. Затем выберите рецепт для целевого образа из соответствующего выпадающего списка. В нашем случае выбран полный образ без графического интерфейса: core-image-full-cmdline .
Выбор рецепта для сборки образа
После этого щёлкните по кнопке «Advanced configuration».
Переход к расширенным настройкам
На вкладке «Image types», в меню «Distro», выберите «poky», если хотите собрать самый свежий стабильный релиз. Затем, в списке «Image types», выберите желаемый формат образа. Обычно имеет смысл выбирать здесь «.iso», «.vdi» и «.vmdk». Образы в таких форматах наиболее удобны для практического использования.
Выбор формата образа
На вкладке «Output» задайте настройки, соответствующие вашим потребностям. Советуем добавить в образ как минимум 4 Гб свободного пространства для включения SDK для архитектуры i686 (если вы экспериментируете с платой Edison). Кроме того, было обнаружено, что весьма полезно устанавливать «deb» в качестве формата корневой файловой системы. В итоге мы пришли к следующим настройкам.
Теперь можете сохранить выполненные настройки, нажав на кнопку «Save», и, в основном окне, нажать на кнопку «Build Image» для запуска процесса сборки образа.
Hob запустит экземпляр bitbake core-image-full-cmdline с заданными настройками.
Примечание №6. Процесс сборки может занять очень много времени. Но, в зависимости от возможностей вашего компьютера, вы можете изменить число потоков, использующихся при сборке, настраивая параметры «BitBake parallel threads» и «Make parallel threads» в окне настроек Hob.
Настройка количества потоков, использующихся при сборке
Примечание №7. И, наконец, при использовании Hob, у вас есть возможность выбрать, какие пакеты вы хотите включить в образ, который планируете собрать. Для того, чтобы это сделать, перед началом сборки образов, нажмите на кнопку «Edit image recipe».
Переход к настройке состава пакетов, включаемых в образ
В появившемся окне выберите пакеты, которые хотите добавить в образ.
Когда процесс сборки образов завершится, вы можете тут же их опробовать! Для этого нажмите на кнопку «Run image». Hob запустит QEMU с только что собранным образом qemux86.
Образ собран и готов к запуску
В самом начале запуска система попросит задать пароль суперпользователя.
Запустится ещё одно окно командной строки UNIX. В нём можно наблюдать за индикатором загрузки на фоне логотипа Yocto Project.
После загрузки вы можете войти в учётную запись root только что созданного образа Yocto. Помните о том, что, добавив параметр отладки (debug-tweak) в переменную EXTRA_IMAGE_FEATURES в файле conf/local.conf, вы сможете входить в систему как root-пользователь без пароля. В противном случае нужно будет задать пароль для root-пользователя в рецепте BitBake перед сборкой образа.
Теперь всё готово для того, чтобы приступить к экспериментам с виртуальной машиной QEMU, на которой работает Yocto Linux.
Примечание №8. После сборки образа Yocto по методике, представленной выше, на диске будет занято 89,8 Гб.
Размер данных, сгенерированных при сборке образов
Итоги
/yocto-2.0/poky-jethro-14.0.0/build/tmp/deploy/images/qemux86/*». Здесь, в зависимости от настроек, могут быть файлы в различных форматах. Например, файлы .iso, .vmdk, .vdi.
Теперь вы можете запускать полученные образы, используя эмулятор или гипервизор, которым обычно пользуетесь. Среди них – Microsoft Hyper-V, VMware Fusion, VirtualBox и другие. Удачных экспериментов!
Источник