Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

mkimage-profiles: долгая дорога в 0.9.x

Michael Shigorin, Kiev, Ukraine

LVEE Winter 2013

The further development is discussed for mkimage-profiles, the tool that started as a research project to reduce configuration and code duplication while still being useful to those working on distribution images and virtual environments/machines. The overview of changes happening within and around mkimage-profiles is presented for the period of about half a year while it is being prepared for production.

mkimage-profiles изначально был “домашним” проектом по исследованию возможности уменьшения излишнего дублирования общей части конфигурации и вспомогательного кода, необходимого для формирования образов дистрибутивов и виртуальных окружений/машин1.

Проект родился, подрос и начал выходить в мир. Ниже представлена попытка оценить характер и степень влияния изменений, происшедших в и около mkimage-profiles за последние полгода при выведении его на начало реального применения.

За прошедшее время расширился список задач, усложнилась аппаратная часть, не стояла на месте подлежащая и соседняя инфраструктура, подключились новые люди. У проекта добавились документация в PDF, поддержка UEFI и первая боевая задача.

Из появившихся задач наиболее сложной, как ни странно, оказалась изначальная: облегчить жизнь релиз-менеджеров и улучшить качество результата их труда. Обнаружилось, что коллегам нужны не только предусмотренные ранее и достаточно реализованные возможности, но и не совсем предполагавшиеся изначально или такие, которые сами по себе понятны, но нетривиальны в “честной” реализации. Тем не менее спектр наработок, которые делают другие участники проекта, постепенно ширится, а в размышлениях над наиболее концептуально сложными моментами немало помог советом Н.Н. Непейвода.

К концу осени 2012 года была реализована начальная поддержка сборки UEFI-совместимых образов, причём трудами Matthew Garrett получилось сделать их гибридными в квадрате — usbflash/cdrom, BIOS/UEFI. Из менее радикальных добавлений можно упомянуть поддержку APU и архитектуры armh (Sisyphus для ARM v7hf), а также добавление наборов firmware после ряда столкновений с реальным железом помимо тестовых виртуальных машин.

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

Среди внешних изменений запомнились GNU Make 3.82, systemd-197 и более локальные диверсии, производимые неизменно дружественными апстримами и коллегами по сизифу.

Документация оказалась в сложном положении: накопилось довольно много отдельных README-файлов, разложенных по соответствующим “закоулкам” профиля и порой обновляемых (иногда даже внёсшим функциональность коммитом). Окинуть их все одним взглядом стало уже непросто. Выходом оказался некоторый race condition: из двух присланных альтернативных вариантов патчей после обсуждения был принят несколько более проработанный и минималистичный, превративший уже существующую документацию в asciidoc и добавивший её сборку в PDF и HTML.

Не обошлось и без разочарований: двое коллег из релиз-менеджеров, более или менее плотно поработав с mkimage-profiles2, вернулись для текущих задач на привычные и тщательнее проработанные по критичным для них моментам mkimage-profiles-desktop, с доработки и рефакторинга которых собственно и начался этот проект. Препятствием оказались две конкретные особенности (cleanup и i18n), недостатки по которым были уже известны и попытки решения которых прорабатывались, но на сей момент не приведены в приличный вид и, соответственно, не включены в основное дерево.

С другой стороны, для людей с более специфическими задачами mkimage-profiles неожиданно оказался удобней: например, начальное портирование дистрибутива с озвучиванием ALT Linux Homeros было выполнено в течение одного-двух дней.

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

Тем временем оказались полезными даже начальные результаты по первой “настоящей” задаче3: в автоматическом режиме создан и опубликован набор из 18 “живых” установочных ISO-образов (8 DE и icewm, i586/x86_64±UEFI), позволивший разработчикам уже в процессе подготовки отловить ряд апстримных багов и межглючных взаимодействий и имеющий как минимум ещё одного настоящего пользователя со слишком новым ноутбуком, кроме вашего покорного слуги. Эти сборки предполагается обновлять еженедельно, а при запросах майнтейнеров — хоть ежедневно.

При проектировании mkimage-profiles было решено организовать инкрементальное построение конфигурации целевых образов на основе базовых дистрибутивов — “пустых” инсталятора, livecd и т.д. Это неплохо работало и даже не сломалось, когда была добавлена поддержка сборки шаблонов виртуальных окружений OpenVZ — они достаточно сильно отличались от дистрибутивов, чтобы беду особо не предвещать. Сложности наметились после реализации сборки образов дисков виртуальных машин; однако в полной мере проблема выявилась при добавлении chroot’ов и образов ФС для загрузки ARM-систем: чтобы сделать то же самое, только уже развёрнутое и завёрнутое в tarball или образ для flash-памяти, потребовалось построение параллельной конфигурации от другого “корня”.

1 Michael Shigorin. Макраме из дистрибутивов: mkimage-profiles. // LVEE 2012. http://lvee.org/en/articles/268
2 http://altlinux.org/m-p
3 http://nightly.altlinux.org

Abstract licensed under Creative Commons Attribution-ShareAlike 3.0 license

Назад