Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019)

Материал из 0x1.tv

Докладчик
Денис Пынькин.jpg
Денис Пынькин

APERTIS is a FOSS (Free and open source) GNU/Linux platform derivative from Debian/Ubuntu. Apertis has been started as OS for infotainment in automotive vehicles but nowadays it fits for a wide variety of electronic devices. In this talk I’ll give an overview of Apertis itself and some key components, such as resilent OTA/offline OS updates based on «libostree» and Apertis update manager; Debos tool which allows creation of various Debian-based OS images in a quick and reproducible way; and an overview of used CI which is based on open-source components.

Видео

on youtube

Презентация

Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf

Thesis

Введение

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

Компоненты, которые используются в ОС Apertis либо в сборочной системе, открыты и доступны для использования как по отдельности, так и в составе других проектов, а большая часть изменений «уходят» в апстрим соответствующих проектов либо в ОС Debian.

По состоянию на середину 2019 года официально поддерживаются 3 целевые архитектуры:

  • x86_64 (в том числе Qemu);
  • arm64 (Renesas R-Car);
  • armhf (i.mx 6, SabreLite).

Обеспечена поддержка различных вариантов ОС, различающихся как по функциональности, например с использованием минимального набора ПО либо предоставляющий графическое окружение на целевой системе, так и по внутренней организации — «классический» вариант с использованием пакетной базы и вариант, основывающийся на проекте libostree.

Одной из интересных и важных для производителей особенностей ОС Apertis является минимальный базовый набор ПО, который за редким исключением (например gcc), не включает в себя проекты, использующие лицензию GPLv3 и похожих, страхуя разработчиков конечных решений от неприятных лицензионных сюрпризов. Подробнее с ключевыми особенностями ОС Apertis можно ознакомится на портале с дизайн-документацией и wiki, разумеется учитывая, что документация в открытых проектах может несколько отличаться от реального положения дел.

Обновления ОС с libostree

libostree — это системная библиотека, а также CLI утилита ostree, обеспечивающие возможность атомарных обновлений операционной системы как с использованием сети Интернет (OTA-обновления), так и с использованием дисковых носителей (offline-обновления).

Проект libostree позволяет работать с деревьями ОС в стиле git, обеспечивая возможность держать на одной корневой файловой системе несколько версий ОС, в том числе различные варианты ОС и/или разные ОС (при обеспечении совместимости с libostree). Поскольку изменение «текущей» ОС производится в стиле git (checkout), то появляется возможность быстрого и простого отката к предыдущему состоянию при неудачном обновлении.

Отдельным пунктом хотелось бы упомянуть интеграцию libostree с различными загрузчиками для обеспечения автоматического определения невозможности полноценной загрузки ОС и отката к предыдущей «рабочей» версии. Для автоматического управления атомарными обновлениями и откатами в ОС Apertis, был создан специальный сервис Apertis Update Manager. Краткий обзор достоинств и недостатков libostree для встраиваемых устройств является частью доклада OSTree – атомарные обновления ОС в стиле git (Денис Пынькин, LVEE-2018).

Создание загрузочных образов с помощью утилиты Debos

Утилита Debos[1] предназначена для создания кастомизированных версий операционных систем с использованием пакетной базы ОС Debian. Debos разработан в качестве инструмента для решения стандартных задач, возникающих при модификациях ОС.

Основная задача, которую решает Debos — максимальное упрощение для конечных пользователей описания создания образов систем, готовых к использованию на целевых устройствах, оставляя при этом достаточно возможностей для реализации любого нетривиального этапа процесса сборки.

Одной из ключевых особенностей утилиты Debos является интеграция с проектом libostree, позволяя создавать загрузочные образы дисков для ОС, использующих libostree.

Стандартная проблема, которая возникает при сборке загрузочного образа — это необходимость использования повышенных привилегий для некоторых шагов, таких как установка пакетов. Разными утилитами и дистрибутивами эта задача решается по-разному. Для Debos используется библиотека fakemachine, написанная Sjoerd Simons. Эта библиотека использует виртуальную машину Qemu, позволяя работать с повышенными привилегиями в текущей системе. Кроме того, такой подход позволяет без дополнительных затрат организовать сборку образа под любую архитектуру, поддерживаемую в Qemu.

В задачу утилиты не входит создание повторяемого сборочного окружения. Подразумевается, что для каждого проекта такое окружение уникально и должно создаваться другими средствами, например, Docker.

CI

Lvee2019-2019 Pynkin.jpg

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

  • Gitlab — хранение и ревью исходного кода;
  • Phabricator — управление проектом и трекер ошибок;
  • Jenkins — управление сборочными процессами;
  • Open Build Service — сборка и публикация пакетной базы;
  • Debos — утилита для создания загрузочных образов дисков;
  • LAVA — автоматическое тестирование собранных дисковых образов;
  • QA Apertis — тесты и набор скриптов [1] для анализа результатов тестования, а также генерации отчетов.

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

Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019)!.jpg

Примечания и ссылки

  1. Пынькин Д. А., Debos — еще одна утилита для создания ОС, 2018, https://lvee.org/en/abstracts/263

Plays:129   Comments:0