Что такое перезагрузка пользовательского пространства (мягкая перезагрузка) в Linux

Когда вашей системе Linux требуется перезагрузка, за кулисами происходит больше, чем вы думаете. Одной из самых интересных и полезных функций в современных дистрибутивах Linux является перезагрузка пользовательского пространства или мягкая перезагрузка.
Перезагрузка пользовательского пространства позволяет:
- Быстрый перезапуск уровня обслуживания,
- Переход на новый снимок или корень без выключения ядра ОС,
- Минимальное время простоя при установке обновлений или переходе в чистое состояние.
В этом руководстве мы расскажем что такое перезагрузка пользовательского пространства, в чём её преимущества, как она работает и как выполнить перезагрузку пользовательского пространства в Linux.
TL;DR
Перезагрузка пользовательского пространства означает, что вы перезапускаете всё кроме ядра и встроенного ПО компьютера. В systemd 254/255+ это можно сделать, подготовив новый корень в /run/nextroot/
и запустив systemctl soft-reboot
. Ядро продолжает работать, устройства остаются настроенными, а пользовательские приложения перезапускаются без проблем. Это идеальный вариант для атомарных обновлений с минимальным временем простоя.
Что такое перезагрузка пользовательского пространства?
Традиционная перезагрузка системы похожа на полное закрытие завода и его повторный запуск с нуля. Всё останавливается, питание отключается, и все процессы начинаются заново.
В Linux обычная перезагрузка обычно происходит следующим образом:
- Вы вводите
sudo reboot
илиshutdown -r now
. - Systemd (PID 1) начинает корректное завершение работы. он отправляет SIGTERM, а затем SIGKILL всем запущенным службам в пользовательском пространстве.
- Затем он запускает
systemd-shutdown(8)
. Это приводит к перемонтированию файловых систем, выгрузке драйверов и подготовке к завершению работы ядра или перезагрузке. - Наконец, ядро запускает перезагрузку компьютера или отключение питания с помощью системного вызова
reboot()
.
Этот полный процесс включает в себя остановку пользовательских программ, инициализацию, выгрузку ядра, сброс прошивки и этап загрузчика.
Однако перезагрузка пользовательского пространства больше похожа на то, как если бы завод продолжал работать, но при этом каждый отдел систематически перезапускался в правильном порядке. При этом перезапускается только часть Linux, работающая на уровне пользователя.
С технической точки зрения перезагрузка пользовательского пространства (также называемая мягкой перезагрузкой в systemd или просто перезагрузкой пользователя в целом) приводит к перезапуску всех пользовательских процессов и системных служб без фактической перезагрузки ядра.
Ядро продолжает работать, в то время как всё, что находится над ним, перезапускается. Такой подход позволяет значительно сэкономить время и сократить время простоя системы.
Перезагрузка пользовательского пространства теперь встроена в современные дистрибутивы Linux, использующие systemd 254/255 или более новую версию.
Например, Debian 13 «Trixie», выход которого запланирован на ближайшие дни, включает в себя команду soft-reboot
из коробки.
Как это работает? (Общий обзор процесса)
Во-первых, systemd (система инициализации в большинстве современных дистрибутивов Linux) подаёт сигнал о корректном завершении всех запущенных процессов. Службы останавливаются в порядке обратной зависимости, то есть службы, зависящие от других служб, сначала ждут завершения своих зависимостей.
Затем система отключает файловые системы и выполняет другие задачи по очистке, как при обычном завершении работы. Однако вместо того, чтобы выключить питание или дать ядру сигнал о перезагрузке, система сохраняет состояние ядра и снова запускает процесс загрузки.
На протяжении всего этого процесса ядро остаётся активным, поддерживая аппаратные соединения и управляя памятью. Когда начинается перезагрузка, systemd запускается заново и запускает все службы, как при первой загрузке.
В двух словах: когда вы инициируете перезагрузку пользовательского пространства, Linux делает следующее:
- Останавливает все процессы в пользовательском пространстве — службы, приложения и фоновые задачи завершаются.
- Выполняется повторная инициализация пользовательского пространства — система запускается заново с сервисами по умолчанию.
- Поддерживает работу ядра — перезагрузка оборудования или драйверов не происходит.
Как Systemd обрабатывает перезагрузку пользовательского пространства (технические подробности о systemd)
Чтобы поддержать этот процесс, в Systemd есть специальная цель под названием soft-reboot.target
. Когда вы просите systemd выполнить «мягкую перезагрузку», он обращается к systemd-soft-reboot.service
.
Эта служба выполняет следующие функции:
- Отправляет SIGTERM всем оставшимся пользовательским процессам (без ожидания)
- Затем отправляет SIGKILL всем выжившим
- Если каталог
/run/nextroot/
существует, он становится корневым для системы - Затем он повторно запускает systemd от имени нового пользователя root и продолжает обычную логику загрузки.
Таким образом, systemd очищает старые пользовательские процессы и корректно загружает новую среду — при этом ядро продолжает работать.
Когда следует использовать Userspace Reboot?
Перезагрузка пользовательского пространства полезна, когда вам нужно перезапустить службы или применить обновления без перезапуска ядра.
Вместо перезагрузки всей системы этот метод позволяет сохранить состояние оборудования и ядра. Он позволяет избежать проверок BIOS, инициализации оборудования и последовательности загрузки.
Это делает его идеальным для:
- Применение обновлений программного обеспечения или конфигурации
- Чистый перезапуск системных служб
- Сокращение времени простоя серверов
- Как ускорить перезагрузку настольных компьютеров и ноутбуков.
Это хорошо работает, когда вам нужна новая среда пользовательского пространства, но вы не хотите трогать базовое ядро или драйверы устройств.
Обратите внимание, что для обновления ядра, замены аппаратных драйверов или внесения низкоуровневых изменений в систему по-прежнему требуется полная перезагрузка.
Пример: OSTree и Fedora Silverblue
OSTree и Fedora Silverblue — хорошие примеры, потому что это реальные системы, которые активно используют функции перезагрузки в пользовательском пространстве, особенно благодаря интеграции с механизмом мягкой перезагрузки systemd.
Silverblue управляет операционной системой с помощью модели моментальных снимков через OSTree. При установке обновления:
- OSTree создаёт новый снимок системы в разделе
/var
- Он связывает этот моментальный снимок с
/run/nextroot/
- При перезагрузке система переключается на этот новый root-доступ с помощью перезагрузки пользовательского пространства.
Поскольку ядро продолжает работать, перезагрузка происходит быстрее и безопаснее. Если что-то пойдёт не так, вы сможете вернуться к предыдущему снимку без необходимости перезагружать всю систему.
Как выполнить перезагрузку пользовательского пространства в Linux
Сначала убедитесь, что ваша система поддерживает эту функцию. Чтобы использовать перезагрузку пользовательского пространства (systemctl soft-reboot
), вам нужна версия systemd 254 или новее.
Чтобы узнать, какая версия systemd используется в вашей системе Linux, выполните в терминале следующую команду:
systemctl --version
Вы увидите примерно такой результат:
systemd 257 (257.4-3) +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +ZSTD +BZIP2 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=unified
В первой строке указана версия systemd. В приведённом выше выводе это 257.
Если вы видите более раннюю версию (например, 252 или 249), значит, ваша система пока не поддерживает эту функцию.
В современных системах Linux с systemd можно вызвать перезагрузку пользовательского пространства с помощью этой команды:
sudo systemctl программная перезагрузка
Эта команда указывает systemd выполнить последовательность перезагрузки пользовательского пространства. Ваша система автоматически выйдет из системы. Чтобы продолжить работу, войдите в систему снова.
Всегда сохраняйте свою работу перед выполнением этих команд, так как во время их выполнения все приложения будут закрыты.
Или (в некоторых системах) вы можете выполнить программную перезагрузку с помощью команды:
sudo systemctl soft-reboot
Примечание. Эта функция пока поддерживается не во всех дистрибутивах Linux.
Преимущества и ограничения
Основное преимущество — скорость.
Перезагрузка пользовательского пространства может занять несколько секунд, а не минут. Кроме того, она снижает износ аппаратных компонентов, поскольку не происходит циклического включения и выключения питания.
У этого подхода тоже есть ограничения.
Любые проблемы на уровне ядра не будут устранены, поскольку ядро не перезапускается. Утечки памяти или повреждения в пространстве ядра сохранятся.
Кроме того, не все аппаратные состояния сбрасываются, что иногда приводит к проблемам с некорректной работой устройств.
Лучшие практики
Используйте перезагрузку пользовательского пространства для планового обслуживания и обновления программного обеспечения. Она идеально подходит для установки обновлений приложений, перезапуска служб или очистки временных файлов и процессов.
Придерживайтесь традиционного подхода к перезагрузке при обновлении ядра, замене оборудования или устранении постоянных проблем в системе.
Если вы не уверены, требует ли изменение полной перезагрузки, обычно безопаснее выполнить полную перезагрузку.
После перезагрузки пользовательского пространства проверьте, правильно ли работает система. Хотя это случается редко, некоторые приложения или службы могут некорректно реагировать на такой перезапуск.
Действительно ли полезна программная перезагрузка Linux?
Как я уже говорил, традиционная перезагрузка может занять несколько минут, особенно в системах с большим количеством аппаратных средств, требующих инициализации, или со сложными последовательностями загрузки.
В это время ваша система полностью недоступна. Перезагрузка в пользовательском пространстве может значительно сократить время простоя, поскольку при этом полностью пропускается этап инициализации оборудования.
Таким образом, «мягкая» перезагрузка полезна, потому что:
- Это быстрее, чем полная перезагрузка (поскольку ядро продолжает работать).
- Без повторной инициализации оборудования (без проверки BIOS/UEFI, без перезагрузки ядра).
- Перезапускаются только пользовательские процессы (службы, приложения и демоны запускаются заново).
Эта функция полезна в серверных средах, где каждая минута простоя стоит денег.
Это также полезно для пользователей настольных компьютеров, которые хотят установить обновления системы или перезапустить службы, не дожидаясь полной перезагрузки.
Заключение
Перезагрузка пользовательского пространства — удобный способ для пользователей Linux сэкономить время. Вместо того чтобы ждать полной перезагрузки, можно просто перезапустить пользовательское пространство и сразу вернуться к работе.
Понимание того, как происходит перезагрузка пользовательского пространства, даёт вам ещё один инструмент для эффективного управления системами Linux. Независимо от того, используете ли вы домашний сервер или управляете корпоративной инфраструктурой, знание того, когда и как использовать эту функцию, поможет вам сэкономить время и сократить количество сбоев в работе системы.
В следующий раз, когда вам понадобится перезапустить службы или установить обновления, подумайте, не подойдёт ли вам программная перезагрузка вместо традиционного перезапуска. Ваши пользователи (и ваше терпение), скорее всего, будут вам благодарны за сокращение времени простоя.
Редактор: AndreyEx