Apertis OS для встраиваемых устройств (Денис Пынькин, LVEE-2019) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
;{{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
- Докладчик
- Денис Пынькин
Содержание
Видео
Презентация
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] для анализа результатов тестования, а также генерации отчетов.
В документации присутствует описание настройки ключевых компонентов для создания своей собственной инфраструктуры при необходимости.
Примечания и ссылки
- [ Talks page]
- https://apertis.org
- ↑ Пынькин Д.А., Debos — еще одна утилита для создания ОС, 2018, https://lvee.org/en/abstracts/263