Skip to content

Как это работает ​

Эта страница объясняет архитектуру и принципы работы 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  │     │ │
│  │  │  (откат)   │  │  (откат)   │  │ (текущий)  │     │ │
│  │  └────────────┘  └────────────┘  └────────────┘     │ │
│  └─────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
  ┌──────────────────────────────────────────────────┐
  │                Реестр контейнеров                │
  │  ┌──────────────────┐  ┌─────────────────┐       │
  │  │ alt-atomic:gnome │  │ alt-atomic:kde  │  ...  │
  │  └────────┬─────────┘  └────────┬────────┘       │
  └───────────┼─────────────────────┼────────────────┘
              │                     │
              │    bootc switch     │
              ▼                     ▼
┌──────────────────────────────────────────────────────┐
│                    Ваш компьютер                     │
│  ┌─────────────────────────────────────────────────┐ │
│  │           OSTree (хранилище образов)            │ │
│  │  ┌───────────┐  ┌───────────┐  ┌─────────────┐  │ │
│  │  │  Образ 1  │  │  Образ 2  │  │   Образ 3   │  │ │
│  │  │  (откат)  │  │  (откат)  │  │  (текущий)  │  │ │
│  │  └───────────┘  └───────────┘  └─────────────┘  │ │
│  └─────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘

OSTree и атомарные обновления ​

OSTree — это система управления версиями для операционных систем. Если Git хранит версии исходного кода, то OSTree хранит версии всей файловой системы.

Когда вы обновляете систему:

  1. Новый образ скачивается из реестра
bash
apm system image update / bootc upgrade
  1. OSTree сохраняет его рядом с текущим
  2. При перезагрузке система предлагает на выбор новый образ, порядковый номер всегда инкрементируется и смещается, самый свежий образ под номером 0
  3. Старый образ остаётся доступным для отката если образов не более двух, либо если он был "закреплён" командой:
bash
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:

  • Не зависят от версий библиотек в системе
  • Изолированы друг от друга
  • Обновляются независимо от системы
bash
# Установка приложения
flatpak install flathub org.mozilla.firefox

# Запуск
flatpak run org.mozilla.firefox

Так же установка Flatpak приложений доступна через "центр приложений" в KDE/GNOME

Когда использовать: браузеры, офисные пакеты, медиаплееры, игры — любые графические приложения.

2. Distrobox — для CLI-инструментов и разработки ​

Distrobox создаёт полноценные контейнеры с любым Linux-дистрибутивом. Внутри контейнера вы можете использовать обычный пакетный менеджер, либо управлять пакетами через apm

bash
apm distrobox c create --image alt --name dev
apm distrobox install -c dev hello

Когда использовать: инструменты разработки, компиляторы, специфичные CLI-утилиты.

Distrobox монтирует вашу домашнюю директорию внутрь контейнера и настраивает прозрачный доступ к файлам. Программы из контейнера могут экспортироваться в меню приложений хост машины.

3. Слой образа — для системных компонентов ​

Если вам нужен пакет, который должен быть частью системы (драйверы, системные службы):

bash
# Добавить пакет в конфигурацию
apm system install имя-пакета

# Применить изменения
apm system image apply

# Перезагрузиться для активации
sudo reboot

Также стоит отметить, что некоторые изменения, такие как установка приложений, управление сервисами systemd и настройка системы, могут быть применены вручную путём редактирования файла /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 (или на свой кастомный образ) одной командой с сохранением локального состояния приложений

Что почитать ​

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное.