Швидкий старт системи — це не магія, а акуратна робота з systemd: ми вимірюємо, аналізуємо й оптимізуємо. У цій статті я покажу, як у кілька кроків прискорити завантаження Linux: знайти «вузькі місця», відкласти старт важких сервісів, а ще — візуалізувати граф завантаження. Працюємо уважно і завжди маємо план відкату 😊
Крок 1. Вимірюємо час завантаження
Почнемо з діагностики. Усе робимо через термінал Linux — швидко та прозоро.
# Загальний час: firmware + loader + kernel + userspace
systemd-analyze time
# Хто гальмує у userspace (список юнітів за часом запуску)
systemd-analyze blame
# Критичний ланцюжок залежностей (що кого чекає)
systemd-analyze critical-chain
# Перелік автозапущених юнітів
systemctl list-unit-files --state=enabled
# Помилки поточного завантаження
journalctl -b -p warning..alert --no-pager
Звертайте увагу на юніти, що «висять» найдовше, і на сервіси «wait-online». Вони часто винуватці відчутних затримок.
Крок 2. Оптимізуємо systemd‑сервіси
Безпечно вимикаємо зайве
Спочатку перевірте статус сервісу, потім — вирішуйте: відключити чи замаскувати.
# Подивитися статус
systemctl status NAME.service
# Відключити з автозапуску і зупинити зараз
sudo systemctl disable --now NAME.service
# Повністю заборонити старт (навіть вручну, якщо щось потягне залежність)
sudo systemctl mask NAME.service
# Повернути назад
sudo systemctl unmask NAME.service
sudo systemctl enable --now NAME.service
Mask використовуйте лише для сервісів, у необхідності яких ви впевнені. Наприклад, якщо не користуєтеся Bluetooth — можна вимкнути відповідний сервіс.
Відкладений старт важких задач
Замість запускати «важкі» речі одразу після входу в userspace, відкладіть їх через cron та systemd timers. Це чисто, надійно і не ламає залежності.
# Приклад: відкласти сервіс на 30 секунд після завантаження
# 1) Створіть сервіс
sudo nano /etc/systemd/system/my-heavy.service
# Вміст:
# [Unit]
# Description=My heavy job (delayed)
# [Service]
# Type=simple
# ExecStart=/usr/local/bin/my-heavy-job.sh
# [Install]
# WantedBy=multi-user.target
# 2) Створіть таймер
sudo nano /etc/systemd/system/my-heavy.timer
# Вміст:
# [Unit]
# Description=Delay my-heavy.service after boot
# [Timer]
# OnBootSec=30s
# Unit=my-heavy.service
# [Install]
# WantedBy=timers.target
# 3) Увімкніть таймер
sudo systemctl daemon-reload
sudo systemctl enable --now my-heavy.timer
# Перевірка
systemctl list-timers --all
Так ви звільняєте стартовий інтервал і просадка FPS при старті робочого столу зникає. Це класні трюки Linux, що реально відчуваються.
Мережа: скоротіть «очікування онлайн»
Сервіси *-wait-online.service можуть затримувати boot на десятки секунд, чекаючи стабільної мережі. Якщо вам не критично чекати мережу на етапі boot (наприклад, це не сервер), вимкніть очікування.
# Для систем із NetworkManager
systemctl status NetworkManager-wait-online.service
sudo systemctl disable --now NetworkManager-wait-online.service
# Для systemd-networkd
systemctl status systemd-networkd-wait-online.service
sudo systemctl mask systemd-networkd-wait-online.service
Якщо у вас є сервіси, яким потрібен інтернет одразу, прив’яжіть їх до network-online.target тільки за необхідності. Для інших часто вистачає network.target.
Зайві залежності та паралелізм
Чим більше «After=» у юніта — тим більша ймовірність, що він чекатиме інші служби. Перегляньте налаштування проблемного сервісу й спростіть залежності.
# Відкрити drop-in редактор для сервісу
sudo systemctl edit NAME.service
# Додайте потрібні директиви, приклад:
# [Unit]
# After=network.target
# Wants=network.target
# Переглянути підсумковий юніт із усіма включеннями
systemd-analyze cat-config systemd/service NAME.service
Не зловживайте DefaultDependencies=no — це для тонких випадків і може зламати старт системи.
Альтернативні способи прискорення
- Зменшіть таймаут GRUB. Відкрийте
/etc/default/grub, встановітьGRUB_TIMEOUT=1або навіть0(якщо меню не потрібне), далі:
sudo nano /etc/default/grub
sudo update-grub
- Оптимізуйте initramfs (Debian/Ubuntu): у
/etc/initramfs-tools/initramfs.confвстановітьMODULES=dep, потім:
sudo update-initramfs -u -k all
- Менше фонових платформ. Якщо не користуєтеся snap, видаліть його акуратно (або перейдіть на flatpak):
# Увага: робіть тільки якщо розумієте наслідки
snap list
sudo snap remove --purge <непотрібні-пакети>
sudo apt purge snapd
Ці кроки — частина системної оптимізації продуктивності на десктопі.
Графічний спосіб аналізу
Хочете зручно побачити увесь граф завантаження? Зробімо SVG-діаграму і відкриємо її у браузері 🖼️
systemd-analyze plot > boot.svg
xdg-open boot.svg
У KDE можна ще переглянути «Служби у фоновому режимі»: Налаштування системи → Автозавантаження й завершення роботи → Фонові служби. Там вимикайте лише те, що розумієте (здебільшого це користувацькі, а не системні юніти).
FAQ
Чи безпечно вимикати NetworkManager-wait-online?
На десктопі зазвичай так. На сервері — обережно: деякі сервіси можуть очікувати мережу. Перевіряйте залежності через systemd-analyze critical-chain.
Чим відрізняються disable і mask?disable прибирає автозапуск, але сервіс можна стартувати вручну. mask забороняє запуск взагалі (навіть через залежності), поки не зробите unmask.
Як відкотити невдалу правку юніта?
Якщо редагували через systemctl edit, виконайте sudo systemctl revert NAME.service. Якщо правили файл юніта повністю — поверніть резервну копію або перевстановіть пакет, що його постачає.
Мій сервіс залежить від мережі, але чекати online довго. Що робити?
Спробуйте замінити After=network-online.target на After=network.target і додати повторні спроби підключення у сам сервіс/скрипт. Часто цього досить.
Як відкласти старт Docker або інших важких демона?
Створіть таймер, аналогічний прикладу вище, що запускає docker.service через 20–60 секунд після boot — це прибере пікове навантаження під час входу в сесію.
Як відфільтрувати найповільніші юніти без прокрутки?
Спробуйте: systemd-analyze blame | head -n 20 — отримаєте топ-20 «гальм».
Порада від Kernelka
Робіть зміни маленькими кроками і тестуйте по одному. Тримайте під рукою live-носій на випадок, якщо система не завантажиться. А ще зручно мати окрему TTY-сесію для моніторингу журналів:
journalctl -f -b
Так ви одразу побачите, що саме пішло не так і швидко повернете правки.
Підсумок
- Виміряйте:
systemd-analyze time|blame|critical-chain, перевірте журнали. - Вимкніть непотрібні сервіси; маскуйте лише свідомо.
- Відкладіть старт важких задач через systemd таймери.
- Оптимізуйте мережеві очікування та залежності юнітів.
- Додатково: зменшіть
GRUB_TIMEOUT, оптимізуйте initramfs, приберіть зайві платформи. - Використовуйте графічний звіт
boot.svgдля наочного аудиту.
Ось так крок за кроком ви здобудете швидший старт Linux і чистіший список сервісів. Системна дисципліна — і ваш комп’ютер завантажується помітно швидше 🚀

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.