Git

Обновления и откат

Обновление это новый образ и перезагрузка. Если что-то не так, одна команда возвращает прошлое состояние.

Как обновить систему#

apm system upgrade sudo reboot

apm system upgrade скачивает свежий образ в «ожидание» (staged). Пока вы работаете, текущая система не меняется, а после перезагрузки новый образ становится активным целиком. Обновляется система внутри вашего канала: stable остаётся stable, latest остаётся latest.

Обновляться можно и без терминала: из виджета обновлений в панели Niti и из Atomic Booster (вкладка «Atomic Niri»).

Как откатиться#

Система хранит два состояния: текущее и предыдущее. Если новая сборка вам не подошла:

sudo bootc rollback sudo reboot

Откат занимает секунды: меняются местами две записи загрузчика, ничего не скачивается и не пересобирается. Если обновление уже скачано, но ещё не применено, rollback отбросит его.

Важно. Хранятся только два состояния. После следующего обновления откатным станет то, на котором вы сидели до него.

Что в системе сейчас#

bootc status

Команда покажет текущий образ, канал и деплои: какой запущен, какой ждёт, какой откатный.

Сменить канал#

sudo bootc switch altlinux.space/plafonlinux/atomic-niri-plafon:stable sudo reboot

После переключения все обновления идут из нового канала. Описание каналов в разделе ветки образа.

Почему обновления небольшие#

Образ состоит из слоёв. Если содержимое слоёв перемешивается при каждой сборке, то даже при крошечной правке клиент скачивает почти всё заново. Чтобы этого избежать, образ перед публикацией «нарезают» на слои заново.

В Atomic Niri это делает chunkah: инструмент проекта CoreOS на Rust, который раскладывает файлы образа по слоям по границам пакетов (по базе RPM). Состав пакетов между сборками почти не меняется, поэтому слои остаются теми же, и при обновлении скачивается только изменившаяся часть.

  • chunkah дополняет, а не заменяет докачку на стороне клиента (zstd:chunked): chunkah отвечает за нарезку слоёв при сборке, клиент за то, что докачивается.
  • Его предшественник rechunk сравнивал новую сборку с прошлой, а chunkah работает по составу пакетов и устроен проще.
  • В экосистеме ALT chunkah пока помечен как экспериментальный.

Образ в реестре занимает около 2,6 ГиБ, но при обновлении скачивается только изменившаяся часть.

Подпись образов и SBOM#

Образы latest, stable и dev-test подписаны ключом проекта (cosign), к образу приложен SBOM в формате CycloneDX со списком пакетов и известных уязвимостей (сканер trivy). Atomic Booster проверяет подпись и SBOM перед обновлением и сменой канала. Если подписи нет или она не сходится, обновление не выполняется.

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

cosign verify --key /usr/share/atomic-booster/release-pubkey.pem \ altlinux.space/plafonlinux/atomic-niri-plafon:latest

SBOM текущей системы лежит в /usr/share/doc/atomic-sbom.cdx.json.

Шпаргалка#

ЗадачаКоманда
Обновитьсяapm system upgrade, затем sudo reboot
Откатитьсяsudo bootc rollback, затем sudo reboot
Сменить каналsudo bootc switch altlinux.space/plafonlinux/atomic-niri-plafon:КАНАЛ
Что установленоbootc status
Временно править /usrsudo bootc usr-overlay