Библиотека сайта rus-linux.net
Проект Yocto
Глава 23 из книги "Архитектура приложений с открытым исходным кодом", том 2.
Оригинал: The Yocto Project
Автор: Elizabeth Flanagan
Перевод: А.Панин
23.1. Введение в систему сборки Poky Build System
Система сборки Poky является основой проекта Yocto. В рамках стандартной конфигурации Poky может предоставлять начальный образ системы, настраиваемый в диапазоне от минимального образа, предоставляющего возможность доступа с использованием командной оболочки, до совместимого со стандартом Linux Standard Base образа, использующего прототип пользовательского интерфейса с названием Sato на основе GNOME Mobile and Embedded (GMAE). При использовании этих основных типов образов, уровни метаданных могут быть добавлены для расширения функций; уровни позволяют создать дополнительный стек программного обеспечения для заданного типа образа, добавить в него пакеты для поддержки аппаратного обеспечения (board support packages - BSP) для беспроблемной работы с дополнительным аппаратным обеспечением или даже создать новый тип образа. Используя версию 1.1 системы Poky с кодовым названием "edison", мы покажем то, как BitBake использует рецепты и файлы конфигурации в ходе генерации образа для встраиваемой системы.
При высокоуровневом анализе видно, что процесс сборки начинается с установки параметров окружения оболочки для последующей сборки. Для выполнения этой операции используются исходные данные из файла oe-init-build-env
, который находится в корневой директории дерева исходного кода системы Poky. С помощью этого файла настраивается окружение оболочки, создается начальный изменяемый набор файлов конфигурации и осуществляется взаимодействие с окружением выполнения системы BitBake путем использования файла сценария, позволяющего Poky установить, выполняются ли минимальные системные требования.
Например, одним из наблюдаемых с помощью данного сценария параметров является наличие инструмента Pseudo, являющегося заменой fakeroot
, переданной проекту Yocto компанией Wind River Systems. В этот момент сценарий bitbake-core-image-minimal
, например, должен иметь возможность создать полнофункциональное окружение для кросскомпиляции, после чего сформировать образ Linux-системы на основе описания образа, соответствующего сценарию core-image-minimal
, из исходного кода таким образом, как это описано на уровне метаданных проекта Yocto.
Рисунок 23.1: Высокоуровневый обзор процесса выполнения задачи Poky
В ходе формирования нашего образа BitBake произведет разбор файлов конфигурации, подключит любые дополнительно заданные уровни, классы, задачи или рецепты и начнет с создания цепочки зависимостей с приоритетами. Этот процесс позволяет создать упорядоченную карту задач с установлением их приоритетов. После этого BitBake будет использовать полученную карту задач для установления того, в каком порядке и какие пакеты должны быть собраны для наиболее оптимального разрешения зависимостей компиляции. Задачи, необходимые большинству других задач, имеют большие приоритеты и, следовательно, начинают работу раньше в ходе процесса сборки. Очередь выполнения задач для нашей сборки создана. BitBake также сохраняет итоги разбора метаданных и в том случае, если при последующих запусках устанавливается факт изменения метаданных, могут быть повторно разобраны только измененные метаданные. Планировщик и система разбора данных из состава BitBake являются одними из наиболее интересных архитектурных решений в рамках BitBake, а некоторые окружающие их решения вместе с их реализацией силами разработчиков BitBake также будут рассмотрены далее.
После этого BitBake осуществляет выполнение задач из цепочки, создавая программные потоки (количество которых ограничивается переменной BB_NUMBER_THREADS
в файле conf/local.conf
) для выполнения этих задач в предварительно заданном порядке. Выполняемые в ходе процесса сборки пакета задачи могут быть изменены, вставлены в начало или конец очереди с помощью соответствующих рецептов. Основной, стандартный порядок выполнения задач сборки пакета начинается с получения и распаковки исходных кодов пакета, конфигурации и кросскомпиляции распакованного исходного кода. После этого скомпилированный исходный код разделяется на пакеты и над результатами компиляции проводятся различные действия, такие, как сбор отладочной информации для пакета. После этого разделенные пакеты упаковываются в пакеты поддерживаемого формата; поддерживаются форматы пакетов RPM, ipk и deb. После этого Bitbake будет использовать эти пакеты для создания корневой файловой системы.
Далее: Концепции системы сборки Poky