Повреждение или удаление systemd — критическая ситуация для любой системы Linux на базе Ubuntu. Без systemd система может не запускаться или неправильно обрабатывать сервисы. В этой инструкции вы узнаете, как безопасно восстановить systemd, что делать, если стандартные методы не срабатывают, и как защититься от подобных проблем в будущем. Статья подойдет как начинающим пользователям, так и системным администраторам среднего уровня.
Почему возникает проблема с systemd
- Случайное удаление или повреждение пакетов systemd (например, вследствие некорректного
apt remove) - Ошибочные попытки обновления или даунгрейда systemd
- Использование нестабильных или сторонних репозиториев
- Повреждение файловой системы или сбой жесткого диска
Пошаговое руководство по восстановлению systemd
- Загрузитесь в режим восстановления (Recovery Mode) или с LiveCD
Если ваша система не загружается из-за сбоя systemd, используйте режим восстановления (в меню GRUB выберите пункт Advanced options for Ubuntu) либо загрузитесь с LiveCD/LiveUSB (например, с Ubuntu Desktop).
Цель шага: получить доступ к файловой системе для восстановления пакетов. - Смонтируйте корневую файловую систему (при работе из LiveCD)
Найдите нужный раздел командой:lsblkЕсли root-раздел —, например,
/dev/sda2, выполните:sudo mount /dev/sda2 /mnt sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mntЭти команды монтируют реальную файловую систему вашей Ubuntu и позволяют работать с ней из-под live-сессии. Команда
chroot /mntпереключает окружение на «родную» систему для выполнения команд. - Обновите кэш пакетного менеджера apt
apt updateОбновит список пакетов и информацию о доступных версиях из репозиториев. Это важно для правильного восстановления зависимостей.
- Проверьте наличие и состояние пакетов systemd
dpkg -l | grep systemdВыведет список установленных пакетов с «systemd» в названии. Пакеты с пометкой
rc(удалён, но с сохранёнными конфигурациями) или отсутствующие следует переустановить. - Переустановите или установите пакеты systemd
apt install --reinstall systemd systemd-sysvКоманда переустанавливает основные компоненты systemd. Пакет
systemd-sysvобеспечивает совместимость с традиционными командамиshutdownиreboot. Подтверждайте установку зависимостей.Если пакеты были полностью удалены и команда выдает ошибку, выполните:
apt install systemd systemd-sysvЭто установка «с нуля». Убедитесь, что используются стандартные репозитории Ubuntu (
archive.ubuntu.com), чтобы избежать нестабильных версий. - Проверьте и исправьте зависимости
apt --fix-broken installЕсли встречаются ошибки с зависимостями, эта команда поможет их автоматически исправить.
- Перезагрузите систему
Выйдите из chroot (если применимо) командой:exitЗатем выполните перезагрузку:
sudo rebootПосле перезагрузки проверьте возможность входа в систему. Если проблемы остались — повторите восстановление или воспользуйтесь альтернативными методами.
Альтернативные методы восстановления
- Восстановление через dpkg, если нет подключения к репозиториям
Скачайте deb-пакетыsystemd,systemd-sysv,libsystemd0на другой машине с сайтаarchive.ubuntu.comили официальных зеркал. Затем перенесите файлы на поврежденную систему и установите вручную:dpkg -i systemd_*.deb systemd-sysv_*.deb libsystemd0_*.debВозможна необходимость вручную разрешать зависимости.
- Загрузка в Emergency Shell (аварийная оболочка)
На экране выбора ядра в GRUB нажмитеe, добавьте параметрsystemd.unit=emergency.targetв строку, начинающуюся сlinux, и загрузитесь.
Это минимальное окружение с root-доступом для восстановления системы, например, для повторения шагов установки systemd.
Проверка результата восстановления
- Проверьте версию systemd:
systemctl --versionВывод должен содержать номер версии (например,
systemd 245 (245.4-4ubuntu3.17)). Ошибок быть не должно. - Проверьте статус systemd и сервисов:
systemctl statusУбедитесь, что systemd и связанные сервисы запускаются без ошибок. В случае проблем повторите процедуру восстановления.
- Для окончательной проверки перезагрузите систему:
sudo rebootСистема должна загрузиться в обычном режиме без ошибок.
Как предотвратить подобные проблемы в будущем
- Перед обновлением или удалением системных пакетов создавайте резервные копии — используйте snapper, Timeshift или
rsync. - Избегайте использования сторонних или нестабильных репозиториев без крайней необходимости.
- Перед выполнением команд типа
apt removeвнимательно проверяйте список удаляемых пакетов. - Регулярно проверяйте файловую систему на ошибки командой
sudo fsck -Af -Mв режиме восстановления.
FAQ
Можно ли восстановить systemd без LiveCD, если система запускается?
Да, если удаётся войти в терминал, используйте обычные apt-команды без chroot.
Почему после восстановления некоторые сервисы не стартуют автоматически?
Возможно, их unit-файлы повреждены. Попробуйте переустановить соответствующие пакеты или скопировать файлы сервиса заново.
Нужно ли удалять предыдущие версии systemd?
Нет, apt автоматически заменит старую версию новой. Ручное удаление не требуется и может привести к дополнительным проблемам.
Восстановление systemd — ответственная, но вполне выполнимая задача. Следуйте инструкции внимательно, и ваша Ubuntu вновь будет работать корректно.