ALT Linux Distributions development
 help / color / mirror / Atom feed
From: Дмитрий <dmitry@udalov.online>
To: "Евгений Синельников" <sin@basealt.ru>,
	"Distributions development" <devel-distro@lists.altlinux.org>
Subject: Re: [devel-distro] Атомарный образ
Date: Fri, 31 Jan 2025 18:29:28 +0600
Message-ID: <e95ffd7a-def3-4d42-9164-192c49825d28@udalov.online> (raw)
In-Reply-To: <14B322BC-80D3-4CD1-AE0B-80241A4ED46B@basealt.ru>

Если я правильно понял вопрос о мейнтейнерах, то для них, по сути, 
ничего не меняется, когда система на основе |bootc| находится в режиме 
контейнера с системой можно работать как угодно, используя любые 
пакетные менеджеры, будь то |apt-get|, |epm| или другие.

В частности, используется пакетная база Sisyphus со всеми её 
особенностями. Когда система запускается на хостовой машине, появляются 
некоторые нюансы в работе с ней, но в процессе внесения изменений мы 
снова оказываемся в контейнерной среде, где можем применять любые 
встроенные механизмы установки пакетов локально.

Однако, под "чистым" использованием системы следует понимать минимизацию 
установки пакетов непосредственно в саму систему. Вместо этого 
рекомендуется опираться на контейнерные установщики, такие как 
|flatpak|, |brew|, |distrobox| и подобные. Это скорее рекомендация, чем 
строгая необходимость, но такой подход помогает сохранить систему более 
предсказуемой и управляемой.

Так же благодаря особенностям сборки, мы можем гибко настраивать образ: 
добавлять аргументы в загрузку ядра (nvidia), изменять любые 
конфигурации в /etc (не затронутые пользователем) и многое другое. Это 
позволяет создавать готовые образы, адаптированные под различные цели и 
устройства.

По сути главное что меняется -  это доставка пакетов: вместо 
традиционного подхода используется OCI-контейнер с его слоями и 
особенностями. Кроме того, мы получаем дополнительные преимущества, 
такие как хранение всех изменений в виде |ostree| коммитов с 
возможностью "путешествовать" по ним на этапе загрузки через |GRUB|. 
Либо путешествовать на разные состояния образа в облаке, так как в в OCI 
лежит образ целиком или даже в перспективе перемещаться между любыми 
bootc-совместимыми образами на основе ALT (/var куда переместился home и 
другие папки не затрагиваются)

Делюсь ссылками:

1. Концептуальная составляющей такого рода системы
https://0pointer.net/blog/fitting-everything-together.html

2. Об используемых технологиях и перспективах
https://containers.github.io/bootable/

3. В частности документация bootc
https://containers.github.io/bootc/

4. Так же у Red Hat полно документации разной
https://developers.redhat.com/articles/2024/09/24/bootc-getting-started-bootable-containers#

31.01.2025 17:10, Евгений Синельников пишет:
> Дмитрий,
>
> спасибо за подробное описание, внятное изложение и полезные ссылки.
>
> Думаю, эту историю нужно "переварить". Хотелось бы понять и осмыслить 
> куда мы движемся и общий прогресс вместе с нами куда движется.
>
> В каком смысле оказывается, в этом случае, существенной роль 
> сопровождающего пакетной базы - то есть, мэйнтейнера?
>
> Как не разорваться между этими мирами - пакетным и контейнерным?
>
> По уму, кроме таких артефактов, как gear-репозитрии, rpm-пакеты, 
> apt-репозитории и iso-образы, уже имеются docker/podman, flatpak (и 
> др.) образы...
>
> А тут мы получаем еще образы, и тоже через генерацию докерных чрутов, 
> при этом rpm-базу зачем-то им выпиливаем...
>
> https://github.com/alt-gnome/alt-atomic
>
> Хотя, в целом, понятно зачем -  используем генерацию docker-образов 
> вместо оригинальной.
>
> В общем, спасибо, интересная тема. Но концептуальные детали нужно 
> вычитывать. Видимо, из первоисточников. Какие посоветуете?
>
> PS: схема доверенной сборки контейнеров на сборочнице у нас, кстати, 
> прорабатывалась. Как для iso-образов, так и для docker-контейнеров. 
> Нужны добровольцы для развития и отладки этой истории. Особенно, и в 
> первую очередь, в рамках сообщества.
>
>
>
> 31 января 2025 г. 14:30:37 GMT+04:00, "Дмитрий" <dmitry@udalov.online> 
> пишет:
>
>     Здравствуйте, хотел бы обсудить реализацию атомарного образа для
>     домашних систем. Описание текущего состояния проекта: ссылка
>     <https://atomic.alt-gnome.ru/> Вступление Компания ALT уже активно
>     внедряет технологии атомарных образов в серверных решениях — ярким
>     примером служит проект ALT Container OS. Эти образы ориентированы
>     на массовое развертывание, эффективное администрирование серверов,
>     минималистичный подход и решение узкоспециализированных задач. Как
>     разработчик, я организовал рабочую среду на домашнем компьютере с
>     использованием контейнеров: это позволяет изолировать окружения,
>     гибко настраивать их и легко переносить конфигурации между
>     системами. Атомарные образы (их особенности и нюансы опустим для
>     краткости) стали для меня ключевым инструментом. Сейчас я
>     рассматриваю переход на ALT Linux, однако столкнулся с вопросом
>     создания кастомного атомарного образа для домашней системы,
>     который соответствовал бы моим потребностям для повседневного
>     использования. Технологии На сегодняшний день флагманом в сфере
>     атомарных дистрибутивов я считаю решения от Red Hat. Поэтому как и
>     ALT Container OS, я сосредоточился на технологиях, которые эта
>     компания активно развивает. Краеугольным камнем для реализации
>     этой задачи стал *bootc* — инструмент, на котором сейчас
>     сфокусирована Red Hat. Его ключевая философия заключается в
>     возможности преобразования /*любого*/ дистрибутива в атомарный
>     образ при соблюдении определённых технических условий. Подготовка
>     базового образа За основу берётся OCI-контейнер
>     <https://registry.altlinux.org/image/sisyphus%2Fbase/tag/latest>
>     из реестра ALT Linux. Для приведения его к совместимости с *bootc*
>     выполняется ряд доработок: 1. В образ добавляются все доступные
>     пакеты из репозитория Sisyphus,    чтобы обеспечить базовую
>     функциональность. 2. Пакеты, отсутствующие в репозитории,
>     собираются вручную с учётом    зависимостей и специфики ALT Linux.
>     3. Форк проекта |bootupd| и исправление исходного кода для   
>     совместимости с ALT. 4. Подготавливаю файловую систему, а именно
>     создаю символьные ссылки,    переношу директории чтобы структура
>     образа соответствовала    требованиям *bootc*. Полученный и
>     подготовленный образ является bootc совместимым и может быть
>     использован как для установки так и для обновлений системы.
>     Установщик Как оказалось готовых решений совместимых или хотя бы
>     придерживающихся принципов совместимости с любым дистрибутивом для
>     установки такого образа не существует, проекты привязаны к
>     экосистеме других дистрибутивов, в частности bootc-image-builder
>     который использует Anaconda установщик неразрывно связан с
>     пакетным менеджером dnf. Было принято решение сделать свой
>     простенький установщик
>     <https://github.com/SkyWar-design/atomic-actions/tree/main/models/installer>
>     который бы потенциально мог установить любой bootc совместимый
>     образ но в нашем случае полагающийся на готовый образ ALT. Об
>     изменении системы Помимо разных вариантов установки программ
>     многим юзерам может потребоваться установить пакеты напрямую с
>     помощью встроенного пакетного менеджера или его аналогов. В данный
>     момент единственный способ - это создание локального Dockerfile
>     который наследует облачный образ и применяет в декларативном стиле
>     какие-то команды, по сути любые, встроенный помощник системы
>     atomic-actions прячет эту особенность за упрощенным вариантом
>     взаимодействия с apt-get, но работает пока в весьма упрощенном
>     виде. Теоретически можно попробовать интегрировать rpm-ostree, но
>     насколько я знаю он слишком тесно связан с dnf и фокус разработки
>     смещен в сторону dnf5 + bootc поэтому проект в будущем будет
>     архивным. Несмотря на кажущуюся абсурдность изменять систему через
>     Dockerfile с философской точки зрения это намного удобнее чем
>     спонтанные и хаотичные изменения которые привыкли совершать
>     пользователи в системе так как любое изменение должно быть
>     отражено и сохранено в файле, к тому же Dockerfile является легко
>     переносимым и может быть повторно применен в другой аналогичной
>     системе доступной пользователю или на его базе даже может быть
>     сформирован образ в облаке. О хорошем Проект уже протестирован и
>     работает не только в виртуальной машине но и на реальном
>     устройстве, добавлена поддержка nvidia, разработчики из ALT Gnome
>     Development поддержали меня и помогают в доработке дистрибутива
>     разными маркетинговыми и административными способами. О плохом 1.
>     Обновления Размер готового образа на базе gnome со всей пакетной
>     базой сжимается до состояния 2.7гб. Это довольно много для того
>     что бы позволить себе часто совершать обновления поэтому были
>     предпринятые некоторые шаги для улучшения ситуации, а именно
>     базовый образ был сжат до 1 слоя и назван например base, затем в
>     облаке выполняется dist-upgrade который наследует base образ уже
>     под названием latest итого мы получаем: - base слой 2,7 гб который
>     редко обновляется - latest слой который наследует base и содержит
>     в себе результат dist-upgrade, знимает от 20 до 150 мегабайт
>     (зависит от обновлений) Такой подход позволяет получать микро
>     обновления без необходимости тянуть весь образ, но есть некоторые
>     сомнения в правильности этого подхода, возможно dist-upgrade может
>     изменить модули которые связаны с определенной версией ядра, но
>     ядро у нас хранится в base слое и случится конфликт, если это
>     произойдет то будет разумным перенести формирование ядра и других
>     ключевых вещей в latest слой вместо base. Тут вопрос скорее к
>     знатокам, мне не хватает знаний что бы предугадать такого рода
>     проблемы, а протестировать такой вариант не представляется
>     возможным. 2. Совместимость пакетов Что касается обновлений,
>     ostree как указано в этом коммите
>     <https://github.com/ostreedev/ostree/pull/3166/commits/f81b9fa1666c62a024d5ca0bbe876321f72529c7>
>     уже давно полностью игнорирует папку /var оставляя ее на совесть
>     пользователя. Предполагается что идеально совместимая система -
>     это система которая хранит себя в /usr. Понятное дело что любая
>     система далека от такой философии поэтому при установку *новых*
>     пакетов которым требуется папка в /var нужно быть особенно
>     аккуратными и либо создавать папку на стороне клиента с помощью
>     tmpfiles.d или придумывать какие-то другие варианты решения
>     проблемы, я хочу посмотреть как это делают другие дистрибутивы что
>     бы найти оптимальный путь.
>     ------------------------------------------------------------------------
>     devel-distro mailing list devel-distro@lists.altlinux.org
>     https://lists.altlinux.org/mailman/listinfo/devel-distro
>


  parent reply	other threads:[~2025-01-31 12:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-31 10:30 Дмитрий
2025-01-31 12:29   ` Дмитрий [this message]
2025-01-31 13:29     ` Дмитрий
2025-01-31 14:30       ` [devel-distro] sysusers (was: Атомарный образ) Arseny Maslennikov
2025-02-01  1:06         ` [devel-distro] sysusers Vitaly Lipatov
2025-01-31 13:51   ` [devel-distro] Атомарный образ Arseny Maslennikov
2025-01-31 14:20     ` Дмитрий

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e95ffd7a-def3-4d42-9164-192c49825d28@udalov.online \
    --to=dmitry@udalov.online \
    --cc=devel-distro@lists.altlinux.org \
    --cc=sin@basealt.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Distributions development

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
		devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
	public-inbox-index devel-distro

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-distro


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git