Как это работает
Эта страница объясняет архитектуру и принципы работы ALT Atomic для тех, кто хочет понять, что происходит «под капотом».
Традиционные дистрибутивы vs Атомарные
В традиционных дистрибутивах (обычный ALT, Fedora, Ubuntu) система устроена так:
- Корневая файловая система
/доступна для записи - Пакетный менеджер изменяет системные файлы напрямую
- Обновления применяются «на живую» — каждый пакет обновляется независимо
- При сбое обновления система может оказаться в неконсистентном состоянии
- Откат к предыдущему состоянию сложен или невозможен
В атомарных дистрибутивах (ALT Atomic, Fedora Silverblue):
- Корневая файловая система за некоторыми исключениями только для чтения
- Система распространяется как единый образ
- Обновления происходят атомарно — либо целиком, либо никак
- Откат к любой предыдущей версии по дате или тегу
Что такое «образ системы»
Образ системы — это снимок всей операционной системы, упакованный в OCI-контейнер. OCI (Open Container Initiative) — это стандарт контейнеров, который используется в Docker и Podman.
В ALT Atomic образ содержит:
- Ядро Linux
- Все системные библиотеки и утилиты
- Настроенные сервисы
- Базовый набор приложений
Образ хранится в контейнерном реестре (registry) и доставляется на машину с помощью bootc — инструмента, который позволяет загружать ОС прямо из контейнера.
Как это выглядит на практике
┌─────────────────────────────────────────────────────────┐
│ Контейнерный реестр │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ alt-atomic:gnome│ │ alt-atomic:kde │ ... │
│ └────────┬────────┘ └────────┬────────┘ │
└───────────┼────────────────────┼────────────────────────┘
│ │
│ bootc switch │
▼ ▼
┌──────────────────────────────────────────────────────────┐
│ Ваш компьютер │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ OSTree (хранилище образов) │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Образ v1 │ │ Образ v2 │ │ Образ v3 │ │ │
│ │ │ (откат) │ │ (откат) │ │ (текущий) │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘OSTree и атомарные обновления
OSTree — это система управления версиями для операционных систем. Если Git хранит версии исходного кода, то OSTree хранит версии всей файловой системы.
Когда вы обновляете систему:
- Новый образ скачивается из реестра
apm system image update / bootc upgrade- OSTree сохраняет его рядом с текущим
- При перезагрузке система предлагает на выбор новый образ, порядковый номер всегда инкрементируется и смещается, самый свежий образ под номером 0
- Старый образ остаётся доступным для отката если образов не более двух, либо если он был "закреплён" командой:
sudo ostree admin pin 0Что такое APM и что он делает
APM (Atomic Package Manager) — это утилита для управления ALT Atomic. Она предоставляет единый интерфейс для:
| Команда | Что делает |
|---|---|
apm system image update | Скачивает и применяет обновления образа, учитывает локальное состояние |
apm system image status | Показывает текущий образ |
apm system image history | Показывает историю образов |
apm system install <пакет> | Добавляет пакет в локальную конфигурацию |
apm system image apply | Пересобирает образ с локальными изменениями |
apm distrobox ... | Управляет контейнерами Distrobox |
Как устанавливать программы
В ALT Atomic есть четыре способа установки программ, каждый для своих задач:
1. Flatpak — для графических приложений
Flatpak — это система распространения приложений в изолированных контейнерах. Приложения Flatpak:
- Не зависят от версий библиотек в системе
- Изолированы друг от друга
- Обновляются независимо от системы
# Установка приложения
flatpak install flathub org.mozilla.firefox
# Запуск
flatpak run org.mozilla.firefoxТак же установка Flatpak приложений доступна через "центр приложений" в KDE/GNOME
Когда использовать: браузеры, офисные пакеты, медиаплееры, игры — любые графические приложения.
2. Distrobox — для CLI-инструментов и разработки
Distrobox создаёт полноценные контейнеры с любым Linux-дистрибутивом. Внутри контейнера вы можете использовать обычный пакетный менеджер, либо управлять пакетами через apm
apm distrobox c create --image alt --name dev
apm distrobox install -c dev helloКогда использовать: инструменты разработки, компиляторы, специфичные CLI-утилиты.
Distrobox монтирует вашу домашнюю директорию внутрь контейнера и настраивает прозрачный доступ к файлам. Программы из контейнера могут экспортироваться в меню приложений хост машины.
3. Слой образа — для системных компонентов
Если вам нужен пакет, который должен быть частью системы (драйверы, системные службы):
# Добавить пакет в конфигурацию
apm system install имя-пакета
# Применить изменения
apm system image apply
# Перезагрузиться для активации
sudo rebootСтоит так также отметить что ручное редактирование /etc/apm/image.yml и применение через apm system image apply. Это тот же декларативный формат, что используется в CI/CD — разница лишь в том, что локальный образ остаётся только на вашей машине.
Синтаксис описан в разделе Конфигурирование образа.
Когда использовать: редко. Только если пакетов малое количество и это пакеты которых действительно не хватает в базовой системе
4. Сборка образа в CI/CD
Самый мощный способ кастомизации — создание собственного образа на основе официального. Ваш образ будет:
- Автоматически собираться в CI/CD при каждом коммите
- Храниться в контейнерном реестре
- Образ доступен для установки на любые устройства через
bootc switchлибо через универсальный установщик (LIVE ISO) - Ссылка на шаблон - пример шаблона который можно склонировать для модификации системы
Когда использовать: редко. Если вам нужно больше нескольких пакетов, специфичная конфигурация системы, создание собственного дистрибутива или вы хотите иметь воспроизводимое окружение на нескольких машинах
Почему так сложно?
На первый взгляд атомарная система кажется сложнее традиционной. Но эта сложность даёт важные преимущества:
| Традиционный подход | Атомарный подход |
|---|---|
| Сломал систему обновлением — переустанавливай | Откатился на предыдущий образ |
| Накопление мусора от старых пакетов | Чистый образ при каждом обновлении |
| Сложно воспроизвести окружение | Образ = гарантированное состояние |
| Императивность: история команд определяет состояние | Декларативный: конфиг описывает желаемое состояние |
В чем приемущество ALT Atomic, когда есть btrfs с снапшотами ?
Снапшоты btrfs решают проблему отката. Но атомарные системы дают больше:
- Воспроизводимость: образ — это не «моя система после 12 команд apt-get», а декларативное описание. Можно развернуть идентичное окружение на 10 машинах или через время на новом ноутбуке. Снапшот — это слепок конкретной машины, образ — это рецепт.
- Разделение ответственности: системные компоненты отдельно (образ), пользовательские приложения отдельно (Flatpak/Distrobox), конфиги отдельно (/etc, /var)
- CI/CD для формирования ОС: образ собирается в пайплайне, тестируется линтерами, публикуется и хранится в истории
- Верификация: образ подписан и проверяется при загрузке. Снапшот — это просто состояние диска
- Переключение между образами: bootc switch позволяет перейти с GNOME на KDE (или на свой кастомный образ) одной командой с сохранением локального состояния приложений
Что почитать
- Работа с образом — обновления, откат, переключение образов
- APM — подробнее о командах управления
- Конфигурирование образа — создание собственных образов
- bootc — документация bootc (англ.)
- OSTree — документация OSTree (англ.)
- Distrobox — документация Distrobox (англ.)