Fedora Silverblue, Kinoite и Atomic-редакции определённо снискали популярность у пользователей Linux, не в последнюю очередь благодаря усилиям сообщества по активному внедрению передовых технологий.
Их основные преимущества: неизменяемость, чёткое управление слоями RPM-пакетов, а также версионный контроль, в купе со встроенным инструментарием контейнеризации для разработчиков – toolbox, делают Fedora Atomic Desktops весьма желанными.
Однако технология OSTree, лежащая в основе всего вышеперечисленного, не всегда понятна начинающему пользователю. Отличный гайд для базового понимания уже существует, а в этой статье мы рассмотрим шпаргалки и нюансы, о которых найти упоминание в сети крайне трудно.
Данная статья является адаптацией гайда на GitHub.
Закрепление образа
Бытует мнение, что Fedora Atomic Desktops поддерживает только 3 образа в своей истории commit-ов:
- текущее развёртывание;
- предыдущее развёртывание;
- закреплённое развёртывание.
И действительно, почти во всех обзорах, что я находил, количество развёртываний не превышало 3-ёх, где-то даже явно говорилось о невозможности создания большего количества образов.
Однако это абсолютно неверное мнение! OSTree поддерживает практически неограниченное количество развёртываний при помощи закрепления оных.
sudo ostree admin pin N
Здесь N – индекс развёртывания.
С помощью данной команды вы можете закрепить сколько угодно образов, которые будут помечены фразой: «pinned: yes» при выводе статуса системы.
rpm-ostree status
Однако стоит помнить, что за каждый образ нужно платить, и плата эта – пространство вашего дискового накопителя. Потому крайне не рекомендуется создавать большое количество развёртываний, а неактуальные лучше своевременно откреплять.
sudo ostree admin pin --unpin N
Выбор основного развёртывания
В предыдущем пункте мы определились, что развёртываний может быть неопределённо много, но как сделать одно из них загружаемым по умолчанию?
Для этого существует команда:
sudo ostree admin set-default N
Будьте внимательны! Эта команда может привести к небольшой путанице в вашем загрузчике GRUB.
Возвращение удалённого базового пакета
Про удаление встроенного в базовый образ пакета гайдов хоть отбавляй:
rpm-ostree override remove firefox
А вот как вернуть системе исходно находившийся в ней пакет без наслаивания RPM?
rpm-ostree override reset firefox
Переключение на commit системной ветки
Иногда существует необходимость вернуться к предыдущему commit-у системной ветки, а его в загрузчике уже нет. В этом случае можно загрузить список commit-ов из удалённого репозитория Fedora.
- Загрузите 5 последних commit-ов из ветки Fedora Silverblue.
ostree pull --commit-metadata-only --depth 5 fedora fedora/40/x86_64/silverblue
- Если хотите иметь возможность вернуться к текущему образу, закрепите его
- Выведите загруженные commit-ы, чтобы выбрать лучший, основываясь на временной метке или другом критерии.
ostree log fedora:fedora/40/x86_64/silverblue
- Разверните выбранный commit, используя его хеш или версию.
rpm-ostree deploy 520e744c643b85fd14817a3eb948f200e7dec902cad4157e411dfeda2c6d7aab
- Перед перезагрузкой можно проверить, всё ли верно мы сделали.
rpm-ostree status
Очистка дискового пространства
Иногда случается так, что нам нужно больше места на диске, а commit-ы OSTree не очень-то важны для нас. В таком случае можно очистить неактивные в данный момент развёртывания:
rpm-ostree cleanup -p -b -r -m
Будьте осторожны! Это удалит все образы, кроме текущего и закреплённых, в связи с чем операция отката станет невозможна.
Для другого сценария очистки можно посмотреть справку:
rpm-ostree cleanup --help
Проверка целостности системных файлов
На мой взгляд, очень редкий сценарий, но на плохих накопителях или при стороннем вмешательстве в систему может иметь место быть – измененные системные файлы.
Для того чтобы проверить образ, выполните команду:
ostree fsck -a
Если добавить к команде флаг --delete, это разрешит OSTree удалить плохие файлы, о чём будет сделана пометка в статусе развёртывания. Впоследствии их можно будет загрузить заново.