УДК 3977, 004

Создание Linux дистрибутива на базе Yocto Project

Научный руководитель Кисель Екатерина Сергеевна – кандидат физико-математических наук, доцент кафедры математического моделирования автомобильно-дорожного института (филиала) донецкого национального технического университета (г. Горловка).

Мамчур Мария Владимировна – магистрант автомобильно-дорожного института (филиала) донецкого национального технического университета (г. Горловка).

Аннотация: Данная работа описывает процесс создания собственного дистрибутива для устройств Интернета вещей (IoT). Статья начинается с анализа Yocto Project, инструмента, который предоставляет гибкие возможности для создания встраиваемых Linux систем.

Авторы подробно описывают процесс настройки рабочего окружения, выбора подходящего ядра Linux, интеграции необходимого программного обеспечения и конфигурации системы.

Встроенные операционные системы все чаще используются для выполнения вычислительных задач в реальном времени, и применяются в таких сферах как робототехника и Интернет вещей (IoT). Эти приложения требуют надежного и воспроизводимого поведения операционной системы хоста, что обычно достигается за счет неизменяемой прошивки, хранящейся в постоянной памяти. Такую операционную систему можно создать, используя готовые инструменты Yocto Project.

Ключевые слова: свободное программное обеспечение, условно-бесплатное программное обеспечение, встроенная операционная система, интернет вещей.

Введение

В эпоху цифровизации и повсеместного распространения систем Интернета вещей, инструмент Yocto Project играет ключевую роль в развитии встроенных операционных систем [2]. Данное программное обеспечение распространяется на основе свободной лицензии, что дает разработчикам возможность использовать его в своих проектах на безвозмездной основе и на любой аппаратной архитектуре.

Yocto – проект с открытым исходным кодом, спонсируемый Linux Foundation и финансируемый крупными компаниями-производителями оборудования и поставщиками операционных систем, предоставляет инструменты, методы и метаданные отраслевого класса для создания систем Linux [4, c. 102]. Два основных компонента проекта Yocto поддерживаются совместно с проектом OpenEmbedded: BitBake (сборка) и OpenEmbedded-Core (основной набор скриптов, используемых для запуска процесса сборки) [6].

Являясь совместным проектом, который иногда называют «зонтичным», проект Yocto включает в себя множество различных разрозненных частей процесса разработки [1]. Эти части включают в себя инструменты сборки, метаданные инструкций сборки, называемые скриптами, библиотеки, утилиты и графические пользовательские интерфейсы (GUI). Рассмотрим главные компоненты Yocto Project:

Poky

Система сборки Poky представляет собой набор файлов, которые предлагают использовать уже готовый образ Linux как основу свой системы. Однако в Poky нет двоичных файлов, можно думать о нем как о базовом дистрибутиве, из которого можно собрать собственную систему [5].

Poky предоставляет доступ к коллекции компиляторов GNU (GCC) и использует технику, известную как кросс-компиляция: заимствование цепочки инструментов на одной архитектуре для создания двоичных исполняемых файлов для другой архитектуры (например, создание дистрибутива ARM в системе на базе x86). Разработчики часто используют кросс-компиляцию при разработке встроенных систем, чтобы воспользоваться преимуществами более высокой производительности хост-системы.

Набор метаданных

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

В проекте Yocto существуют разные типы метаданных [5]:

  • Файл конфигурации: включает определение, используемое системой сборки. Этот файл является не только экземпляром сборки, но также может содержать набор метаданных (дистрибутив и компьютер).
  • Скрипты: файлы с настройками, задачами, пакетом, которые необходимы для сборки системы.
  • ISO образ: базовый образ дистрибутива, на основе которого строится система.
  • Файл BitBake: содержит набор инструкций для компиляции исходного файла и упаковки скомпилированного образа.

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

Файлы конфигурации

Файлы конфигурации (.conf) содержат переменные конфигурации, которые управляют действиями Poky. Существует множество файлов .conf, которые находятся на разных уровнях проекта Yocto.

Первым шагом для создания образа является выполнение исходного сценария oe-init-dev, и в ходе этого процесса выполнения создаются файлы конфигурации. Эти файлы необходимы для запуска процесса сборки [6]:

  • conf: локальный файл конфигурации, содержащий текущую информацию о среде сборки. В этом файле необходимо изменить важные переменные, такие как: MACHINE (целевое аппаратное устройство), DISTRO (какой дистрибутив будет использоваться для целевого устройства), IMAGE_INSTALL_append (установить пакеты в полученный образ).
  • conf: список слоев, которые будут проверены BitBake в процессе анализа программной инструкции сборки.

Существует также файл .conf дистрибутива, который будет содержать конкретную информацию о политиках конфигурации сборки, сведения о SDK, версии пакетов. Все важные переменные будут описаны при клонировании Poky из исходного кода проекта Yocto.

Процесс сборки дистрибутива

Первым шагом является подготовка среды для сборки проекта Yocto с использованием виртуальной машины с установкой Linux Mint 21.3 x64 в качестве хоста сборки [3]. Хост имеет минимум 50 ГБ свободного дискового пространства, необходимого для поддержки дистрибутива Linux.

Для сборки образа необходимы некоторые пакеты [5] (рис. 1), которые устанавливаются в сборку хоста с помощью следующей команды в терминале:

$ git clone git://git.yoctoproject.org/poky

$ cd poky

Для успешной компиляции пакета, нам необходимо установить последние версии инструментов [1].

Рисунок9

Рисунок 1. Клонирование Git-репозитория poky

Следующим шагом будет установка переменных сред оболочки, используя команду (рис. 2):

Рисунок10

Рисунок 2. Установка переменных сред оболочки

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

Чтобы создать образ целевой ОС, нужно выполнить команду:

$ bitbake core-image-sato

При первоначальной сборке компилятор хоста используется для создания цепочки инструментов кросс-компиляции и любых других необходимых инструментов сборки.

BitBake также необходимо загрузить все пакеты программного обеспечения, поэтому это может занять некоторое время. По завершении вы сможете найти полученный образ в файле tmp [6].

Когда сборка будет завершена, мы можем загрузить ее с помощью QEMU, эмулирующего 32-битную машину x86. Для этого запустим:

$ runqemu qemux86

В открывшимся окне виртуальной машины можно буде протестировать сборку для IoT устройства (рис. 3):

Рисунок11

Рисунок 3. Вид окна виртуальной машины qemu

Далее можно загружать созданный образ на устройство, используя команду: $ dd if=kuvio-distro-intel-corei7-64.uefiimg of=/dev/sdb

Предполагается, что накопитель находится по пути dev/sdb (это может быть проверено с помощью fdisk). После этого можно вставить USB в прошиваемое устройство и выбрать в BIOS стартовым устройством USB.

Выводы: Мы продемонстрировали упрощенный вариант создания сборки Linux для устройств Интернета вещей. Проект Yocto и его инструменты удобны и функциональны для создания дистрибутива Embedded Linux. Все собирается из частей, которые можно комбинировать по желанию, чтобы полученная система была гибкой и оставляла место для будущих инноваций. Гибкий рабочий процесс, переносимые конфигурации и высокая степень настраиваемости инструментов позволяют выполнять настройку на каждом уровне процесса сборки.

Проект Yocto представляет собой коммерческий рабочий процесс – он разработан и реализован профессиональными разработчиками встраиваемых систем IoT.

Список литературы

  1. Довгаль В.А., Довгаль Д.В. Управление ресурсами в Интернете Вещей // Дистанционные образовательные технологии: материалы II Всерос. науч.-практ. конф., г. Ялта, 2017 г. Симферополь: АРИ-АЛ, 2017. С. 168–173.
  2. Жданов С. Дорожная карта промышленного Интернета вещей. [Электронный ресурс]. – Электрон. зап. – Режим доступа: www.slideshare. net/Sergey Berlinsky.
  3. Крутов В.Н., Треяль В.А., Афанасьев М.В. Необходимость учета технологий сервиса и Интернета вещей в современных машиностроительных САПР // Приоритетные направления развития науки и образования: сб. ст. Междунар. науч.-практ. конф. – Чебоксары, 2014. – С. 310-311.
  4. Росляков А.В. Интернет вещей: учеб. пособие / А.В. Росляков, С.В. Ваняшин, А.Ю. Гребешков. – Самара: ПГУТиИ, 2015. – 115 с.
  5. Developer IBM [Электронный ресурс]. – Режим доступа: https://developer.ibm.com/tutorials/l-yocto-linux/. – Дата доступа: 19.02.2024.
  6. The Yocto Project [Электронный ресурс]. – Режим доступа: https://www.yoctoproject.org/. – Дата доступа: 09.02.2024.