Fedora Silverblue — вариант Fedora с атомарной моделью обновления: базовая система собирается в образ и заменяется целиком, а не патчится по отдельным файлам. Для рабочего стола это даёт простую гарантию: если обновление что-то сломало, вы возвращаетесь на предыдущий образ одной командой и перезагрузкой. Ниже — как схема работает на практике, как ставить программы и что делать, когда стандартных средств не хватает.
Что именно атомарно
Корень — обычная файловая система, но каталог /usr смонтирован только для чтения и принадлежит образу. Пакеты не распаковываются поверх работающей системы: rpm-ostree собирает новый образ, добавляет его в загрузчик как отдельный deployment и предлагает перезагрузиться. Прежний образ остаётся на диске, поэтому откат не требует переустановки и не затрагивает данные.
Изменяемыми остаются /etc, /var и /home. Правки в /etc переносятся между обновлениями как трёхстороннее слияние: если файл в новом образе не менялся, ваша версия сохраняется; если менялся — рядом появляется .rpmnew и предупреждение. Именно поэтому конфиги в /usr править бессмысленно: при следующем обновлении их заменит образ.
Приложения живут отдельно. Графические программы ставятся как Flatpak, консольные инструменты удобно держать в контейнере Toolbox на базе того же Fedora. Третий слой — layering через rpm-ostree — нужен только для того, что обязано быть в базовой системе: драйверов, агентов мониторинга, модулей ядра.
Обновление и откат
Состояние видно в rpm-ostree status: там перечислены deployments, их возраст и список слоёв. Штатное обновление ставит новый образ в очередь и требует перезагрузки.
rpm-ostree status
sudo rpm-ostree upgrade
sudo systemctl reboot
sudo rpm-ostree rollback
Откат переключает загрузчик на предыдущий deployment; вернуться вперёд можно тем же способом. Полезно закрепить удачную конфигурацию, чтобы автоматическая очистка её не удалила:
sudo ostree admin pin 0
ostree admin status
sudo rpm-ostree cleanup -p -r
df -h /
Флаг -p убирает незавершённые deployment, -r — откатные. Не запускайте очистку сразу после обновления: сначала убедитесь, что система, драйверы и периферия работают.
Три способа поставить программу
Правило простое: графический интерфейс — Flatpak, консоль — Toolbox, всё остальное — layering. Flatpak даёт песочницу и обновления независимо от системы, Toolbox — обычный Fedora с dnf внутри, где можно ставить что угодно без перезагрузки.
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.gimp.GIMP
toolbox create dev
toolbox enter dev
Внутри Toolbox доступны dnf install, компиляторы и языковые рантаймы. Контейнер видит домашний каталог, поэтому файлы и настройки не теряются. Удалить его можно через toolbox rm dev, и на базовую систему это никак не повлияет.
Layering: когда без него нельзя
Слой добавляет пакет в образ, поэтому изменения вступают в силу после перезагрузки. Каждый лишний пакет увеличивает размер образа и вероятность конфликта при обновлении, так что счётчик слоёв стоит держать маленьким.
sudo rpm-ostree install htop tuned
sudo rpm-ostree override remove firefox firefox-langpacks
rpm-ostree status --json
sudo rpm-ostree reset
override remove исключает пакет из базового образа — так убирают встроенный браузер, чтобы заменить его Flatpak-версией. reset снимает все слои и overrides и возвращает систему к чистому образу; это самый быстрый способ разобраться, если после экспериментов что-то конфликтует.
Параметры ядра меняются через rpm-ostree kargs, а не через GRUB: загрузчик здесь генерируется автоматически.
rpm-ostree kargs
sudo rpm-ostree kargs --append=amdgpu.ppfeaturemask=0xffffffff
sudo rpm-ostree kargs --delete=quiet
sudo rpm-ostree kargs --editor
Автоматические обновления
Silverblue умеет скачивать обновления в фоне и применять их при перезагрузке. Политика задаётся в /etc/rpm-ostreed.conf, в секции [Daemon] параметром AutomaticUpdatePolicy: значение stage загружает образ и ждёт перезагрузки, check только проверяет наличие, none отключает автоматику. Таймер включён по умолчанию, но его состояние стоит проверить.
systemctl status rpm-ostreed-automatic.timer
cat /etc/rpm-ostreed.conf
sudo systemctl restart rpm-ostreed
rpm-ostree status
Автоматика не перезагружает машину сама — это правильно: решение остаётся за вами. Если вы ставите обновления вручную, политику none удобнее совместить с еженедельной проверкой, чтобы не пропустить исправления безопасности.
Смена релиза
Переход на следующую версию Fedora здесь тоже атомарен: вы меняете origin образа командой rpm-ostree rebase, и система загружает новый образ целиком, сохраняя старый deployment. Номер релиза и имя ветки берите на странице загрузки Fedora; после перезагрузки проверьте rpm-ostree status и убедитесь, что слои и overrides перенеслись. Если что-то не так, rpm-ostree rollback вернёт прежнюю ветку без потери данных.
Перед крупным обновлением освободите место: каждый образ занимает несколько гигабайт, и при заполненном корне upgrade завершится ошибкой задолго до скачивания.
Диагностика
Если обновление не встаёт или система грузится в аварийном режиме, смотрите журнал демона и проверяйте целостность хранилища. Ошибки SELinux и нехватка места — две самые частые причины.
journalctl -u rpm-ostreed -n 100 --no-pager
rpm-ostree status -v
sudo ostree fsck
sudo journalctl -b -p err --no-pager
Сообщения о нехватке места на корне решаются очисткой старых deployment и кэша Flatpak: flatpak uninstall --unused освобождает несколько гигабайт. Перед очисткой убедитесь, что текущий deployment загружается без ошибок. Не пытайтесь расширить /usr вручную — это противоречит модели образа и вернётся при первом же обновлении.
Кому подходит Silverblue
- Тем, кто ценит предсказуемые обновления и хочет иметь точку возврата.
- Разработчикам, готовым держать инструменты в Toolbox или контейнерах.
- Администраторам парка одинаковых машин: один образ проще тестировать.
Не стоит выбирать его, если нужны проприетарные драйверы с ручной сборкой модулей или десятки RPM-пакетов в базовой системе: layered-подход там превращается в постоянную борьбу с зависимостями.
Итог
Silverblue меняет привычки, но не возможности: база обновляется атомарно и откатывается, приложения изолированы, а консольные задачи решаются в Toolbox. Начните с Flatpak и контейнера, добавляйте слои только при реальной необходимости и держите один закреплённый deployment — этого достаточно, чтобы рабочий стол перестал быть источником сюрпризов.