Введение / Зачем это нужно
Загрузка системы — первое впечатление от работы с устройством. Если Linux стартует медленно, это раздражает и снижает продуктивность. С помощью встроенного инструмента systemd-analyze вы можете измерить каждую стадию загрузки, найти «узкие места» и целенаправленно их устранить. По завершении этого гайда вы сможете сократить время старта системы на десятки процентов, не прибегая к экспериментальным патчам.
Требования / Подготовка
- Система с
systemd(Ubuntu 22.04+, Debian 11+, Fedora 36+ и другие). - Права
sudoилиrootдля управления службами. - Установленный пакет
systemd(предустановлен по умолчанию в большинстве дистрибутивов).
Пошаговая инструкция
Шаг 1: Запустите базовый анализ загрузки
Узнайте общее время загрузки и выявите самые медленные службы.
# Общее время загрузки
systemd-analyze
# Список служб по времени инициализации (от большего к меньшему)
systemd-analyze blame
Первая команда выведет суммарное время ядра и пространства пользователя. Вторая — отсортированный список служб, где каждая строка показывает время запуска. Сфокусируйтесь на записях с наибольшими значениями.
Шаг 2: Просмотрите визуальный график загрузки
Наглядно проанализируйте цепочки запуска и точки ожидания.
# Сохраните график в формате SVG
systemd-analyze plot > boot-plot.svg
Откройте boot-plot.svg в браузере. График покажет, какие службы стартуют параллельно, а какие — последовательно. Ищите длинные блоки и «простаивающие» цепочки — они часто указывают на зависимости или ожидания ресурсов.
Шаг 3: Отключите ненужные службы и сокеты
Уберите из автозагрузки то, что не требуется для работы системы.
# Пример: отключить службу
sudo systemctl disable имя-службы.service
# Пример: отключить сокет (если служба не требуется)
sudo systemctl disable имя-службы.socket
Не отключайте критичные службы: systemd-udevd, systemd-journald, сетевые цели (если вы используете сеть сразу после загрузки). Избегайте отключения служб шифрования и монтирования, если они нужны для корневой файловой системы.
Шаг 4: Настройте параллельность и таймауты
Ускорьте запуск за счёт более агрессивной параллельности и сокращения таймаутов.
Откройте файл /etc/systemd/system.conf и раскомментируйте или добавьте параметры:
# Включить параллельный запуск по умолчанию
DefaultTimeoutStartSec=10s
DefaultTimeoutStopSec=10s
После изменений выполните:
sudo systemctl daemon-reload
Это заставит systemd применить новые лимиты и ускорит пропуск «зависших» служб при старте.
Шаг 5: Проверьте улучшения после перезагрузки
Убедитесь, что изменения дали ожидаемый эффект.
# Перезагрузите систему
sudo reboot
# После входа сравните метрики
systemd-analyze
systemd-analyze blame
Сравните новые значения с исходными. Если время загрузки сократилось, вы зафиксировали результат. При необходимости повторите шаги для оставшихся «узких мест».
Проверка результата
- Общее время загрузки должно сократиться хотя бы на 10–30% в зависимости от количества отключенных служб.
- В выводе
systemd-analyze blameне должно остаться длинных цепочек от неиспользуемых сервисов. - График в
boot-plot.svgстанет компактнее, с меньшим числом последовательных блоков.
Возможные проблемы
- Служба не отключается через disable — возможно, она включена через override или симлинк в
/etc/systemd/system/. Проверьтеsystemctl status имя-службыи удалите лишние ссылки вручную. - После отключения что-то перестало работать — включите службу обратно через
systemctl enable имя-службыи протестируйте перезагрузку. - График пустой или неполный — убедитесь, что загрузка завершена и у вас есть права на чтение журнала systemd. При необходимости перезагрузитесь и повторите анализ.