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 19:29:26 +0600
Message-ID: <956286cc-0e9c-4cb2-8f06-e9b600a20c4f@udalov.online> (raw)
In-Reply-To: <e95ffd7a-def3-4d42-9164-192c49825d28@udalov.online>

В данный момент я считаю что самое важное влияние которое оказывают 
мейнтейнеры и пакетная база в репозитории на такой образ - это 
следование следующим декларативам:

https://www.freedesktop.org/software/systemd/man/latest/systemd-sysusers.html

https://www.freedesktop.org/software/systemd/man/latest/systemd-tmpfiles-setup.service.html

А ALT в данный момент очень мало пакетов собраны с учетом этих правил. 
Вероятно мне придется проверять каждый пакет которые будет добавлен в 
систему после ее установки и описывать эти правила вручную. Но если все 
пакеты будут собраны с использованием этих правил - переключением между 
образами и обновление будут тривиальной задачей, необходимые юзеры и 
папки буду созданы автоматически и для самовоспроизведения и корректной 
работы единственным важным обновлением будут папки /usr и /etc

31.01.2025 18:29, Дмитрий пишет:
> Если я правильно понял вопрос о мейнтейнерах, то для них, по сути, 
> ничего не меняется, когда система на основе |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
>>
> _______________________________________________
> devel-distro mailing list
> devel-distro@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-distro


  reply	other threads:[~2025-01-31 13: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   ` Дмитрий
2025-01-31 13:29     ` Дмитрий [this message]
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=956286cc-0e9c-4cb2-8f06-e9b600a20c4f@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