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

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

;{{SpeakerInfo}}: {{Speaker|Денис Пынькин}}
<blockquote>
</blockquote>

{{VideoSection}}
{{vimeoembed|366009582|800|450}}
<!-- {{youtubelink|}} -->

{{SlidesSection}}
[[File:Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

===  Введение  ===

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

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

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

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

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

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

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

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

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

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

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

Утилита [https://github.com/go-debos/debos Debos]<ref>Пынькин Д.А., Debos  еще одна утилита для создания ОС, 2018, https://lvee.org/en/abstracts/263</ref> предназначена для создания кастомизированных версий операционных систем с использованием пакетной базы ОС Debian. Debos разработан в качестве инструмента для решения стандартных задач, возникающих при модификациях ОС.

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

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

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

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

===  CI  ===


[[File:2019_Pynkin|377px|image]] <span id="pynkin:fig1" label="pynkin:fig1">[pynkin:fig1]</span>

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

* [https://about.gitlab.com/ Gitlab]  хранение и ревью исходного кода;
* [https://phacility.com/phabricator/ Phabricator]  управление проектом и трекер ошибок;
* [https://jenkins.io Jenkins]  управление сборочными процессами;
* [https://openbuildservice.org/ Open Build Service]  сборка и публикация пакетной базы;
* Debos  утилита для создания загрузочных образов дисков;
* [https://www.lavasoftware.org/ LAVA]  автоматическое тестирование собранных дисковых образов;
* [https://qa.apertis.org/ QA Apertis]  тесты и набор скриптов [https://gitlab.apertis.org/tests/apertis-test-cases] для анализа результатов тестования, а также генерации отчетов.

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

{{----}}
[[File:{{#setmainimage:Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019)!.jpg}}|center|640px]]
{{LinksSection}}
* [ Talks page]
<!-- <blockquote>[©]</blockquote> -->
* https://apertis.org


<references/>

[[Категория:LVEE-2019]]
[[Категория:Draft]]

Версия 14:36, 24 октября 2019

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

Видео

Презентация

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

image [pynkin:fig1]

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

  • 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