Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Сборка дистрибутива Linux с помощью Yocto в Ubuntu

Оригинал: How to create your own Linux Distribution with Yocto on Ubuntu
Автор: Ahmad
Дата публикации: 20 февраля 2017 г.
Перевод: А.Панин
Дата перевода: 27 марта 2017 г.

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

Требования к машине для разработки

  • Как минимум 4 - 6 ГБ оперативной памяти.
  • Актуальная версия дистрибутива Ubuntu (в нашем случае это версия 16.04 LTS).
  • Как минимум 60 - 80 ГБ свободного дискового пространства.
  • Установленные в систему пакеты программного обеспечения из приведенного ниже списка.
  • Стабильная версия Yocto (в комплекте с компонентом Poky, представляющим собой минимальное окружение для разработки дистрибутивов).

Для установки необходимых пакетов программного обеспечения достаточно выполнить следующие команды:

Очевидно, что для установки всех необходимых для разработки дистрибутива программных компонентов понадобится практически 1 ГБ дискового пространства.

В рамках данной статьи мы будем использовать стабильный выпуск Poky с кодовым именем "morty", файлы которого должны быть скопированы в нашу систему.

git clone -b morty git://git.yoctoproject.org/poky.git

Далее нужно перейти в директорию "poky" и выполнить в ней следующую команду для установки/экспорта переменных окружения, необходимых для разработки дистрибутива на основе Yocto.

source oe-init-build-env

На иллюстрации ниже показано, что после запуска сценария сборки окружения open embedded (oe) текущая директория в терминале изменится на "build" для выполнения дополнительной конфигурации и компиляции компонентов нового дистрибутива.

Также на приведенной выше иллюстрации показано, что в директории "conf" создается файл конфигурации "local.conf". Это файл конфигурации Yocto, который содержит параметры целевой машины, набора компонентов разработки (SDK) для выбранной архитектуры и так далее.

Как видно на иллюстрации ниже, мы выбрали целевую машину "quemux86-64".

Теперь нужно раскомментировать следующие параметры файла конфигурации "local.conf" таким образом, как показано ниже.

DL_DIR ?= "${TOPDIR}/downloads"

SSTATE_DIR ?= "${TOPDIR}/sstate-cache"

TMPDIR ?= "${TOPDIR}/tmp"

PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"

Ниже показано, что в файл конфигурации "local.conf" нового, основанного на Yocto дистрибутива Linux были включены директивы для задания дополнительных параметров и пустого пароля. В противном случае пользователь не сможет войти в новую систему.

EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

В процессе создания новой системы на основе ядра Linux мы не использовали каких-либо инструментов с графическим интерфейсом, таких, как toaster (hob более не поддерживается).

Компиляция и сборка дистрибутива на основе Yocto

Теперь следует выполнить следующую команду для инициирования процесса компиляции пакетов, совместимых с выбранной целевой машиной.

bitbake core-image-minimal

Важно выполнять приведенную выше команду от лица обычного пользователя Linux, а не от лица пользователя root. На следующей иллюстрации показано сообщение об ошибке, сгенерированное при использовании утилиты bitbake от лица пользователя root.

И снова следует выполнить команду для экспорта переменных окружения (то есть, воспользоваться сценарием oe-init-build-env) и повторить приведенную выше команду для инициирования процесса загрузки и компиляции пакетов.

Как становится понятно при рассмотрении приведенной ниже иллюстрации, на начальном этапе утилита осуществляет разбор рецепта.

На следующей иллюстрации показано завершение процесса разбора рецепта сценарием сборки. Также на ней приведена информация о сборочной системе, силами которой генерируется новый дистрибутив на основе Yocto.

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

На следующей иллюстрации показано завершение процесса выполнения задач из списка.

Новые образы для машины типа "qemux86-64" будут сохранены в директории "build/tmp/deploy/images/qemux86-64", что видно на иллюстрации ниже.

А это сообщение об ошибке, которое будет выведено при выполнении команды посредством утилиты Putty.

Та же команда, выполняемая с помощью терминала, открытого по протоколу RDP в системе Ubuntu.

Второе окно с эмулятором qemu для запуска нового дистрибутива Linux, основанного на Yocto.

На иллюстрации ниже показан вход в новую систему с выводом информации о версии Yocto. По умолчанию используется имя пользователя root и пустой пароль.

Наконец, следует убедиться в работоспособности новой системы путем входа в нее от лица пользователя root с использованием пустого пароля. На следующей иллюстрации видно, что в нашей новой версии Linux могут исполняться основные команды Linux (date, ifconfig и uname).

Цель данной статьи заключалась в объяснении процедуры создания нового дистрибутива Linux с помощью инструментария, предоставляемого проектом Yocto. Надеюсь, она была достигнута.