Боремось із затримкою завантаження Linux

Боремось із затримкою завантаження Linux – ITEDU Blog

Кожен користувач Linux рано чи пізно стикається з тим, що система починає завантажуватися повільніше, ніж після початкової інсталяції. Причиною зазвичай є фонові служби, які додаються разом із новим софтом і автоматично прописуються в автозавантаження.

Ми вже детально розглядали, як контролювати приховані програми та процеси в Linux, щоб підтримувати порядок у системі. Проте сьогодні ми підемо ще далі й навчимося аналізувати швидкість старту та професійно керувати сервісами за допомогою інструментів systemd.

Чому система вантажиться довго?

Більшість сучасних дистрибутивів використовують систему ініціалізації systemd. Вона запускає сервіси паралельно, що значно швидше за старі методи, але водночас створює складні ланцюжки залежностей. Якщо один важкий сервіс чекає на відповідь іншого, весь процес завантаження зупиняється.

Щоб не гадати, що саме гальмує ваш ПК, звернемося до вбудованої аналітики.

Крок 1. Аналіз часу завантаження системи

Перш ніж щось вимикати, потрібно отримати точні дані. Відкрийте термінал і скористайтеся командою:

systemd-analyze

Ця команда покаже загальний час, витрачений на ініціалізацію ядра (kernel) та базових системних служб. Зверніть увагу, що сюди не входить час завантаження графічної оболонки та користувацьких програм.

Щоб зрозуміти, скільки часу витрачається на підготовку графічного інтерфейсу, скористайтеся командою:

systemd-analyze critical-chain graphical.target

Ви побачите ланцюжок сервісів, які мають запуститися, перш ніж з’явиться робочий стіл. Це допоможе визначити критичні точки затримки.

Крок 2. Пошук найповільніших сервісів

Найбільш корисним інструментом для нашого завдання є параметр blame. Він виводить список усіх запущених служб, відсортований за часом їхнього завантаження:

systemd-analyze blame

Поради щодо навігації:

  • Використовуйте стрілки або клавіші Page Up / Page Down для перегляду списку.
  • Натисніть q, щоб вийти з режиму перегляду.

Деякі сервіси запускаються паралельно, тому загальний час завантаження не є простою сумою всіх значень у списку.

Крок 3. Вимкнення непотрібних служб через Systemctl

Припустимо, у списку ви помітили snapd.service (служба для роботи з пакетами Snap), яка займає чимало часу, але ви не плануєте використовувати цей формат застосунків.

Щоб вимкнути автоматичний запуск сервісу, виконайте:

sudo systemctl disable snapd.service

Після перезавантаження система ігноруватиме цей сервіс. Однак у Linux існує механізм активації через сокет. Це означає, що вимкнений сервіс може знову запуститися, якщо до нього звернеться інша програма. 

Щоб знайти всі пов’язані зі Snap компоненти, можна використати фільтр:

systemd-analyze blame | grep snap

Крок 4. Маскування

Якщо сервіс занадто наполегливий і продовжує запускатися всупереч вашій забороні, використовуйте маскування. Це радикальний метод, який створить посилання на /dev/null, що зробить запуск сервісу неможливим навіть для інших залежних процесів.

Приклад для повного блокування Snap:

sudo systemctl mask snapd.service
sudo systemctl mask snapd.socket

Будьте обережні: маскування — це сильний інструмент. Використовуйте його лише тоді, коли впевнені, що сервіс точно не потрібен вашій системі.

Які сервіси зазвичай можна вимкнути?

Залежно від вашого заліза та сценаріїв використання, часто можна безболісно вимкнути такі служби:

  1. avahi-daemon.service — пошук пристроїв у локальній мережі (принтери, чати). Якщо ви не користуєтесь цим, можна вимикати.
  2. ModemManager.service — керування 4G/LTE модемами. Якщо у вас стаціонарний ПК або ноутбук з Wi-Fi, він вам навряд чи потрібен.
  3. thermald.service — контроль температури (актуально переважно для ноутбуків Intel).

Перш ніж вимикати будь-який сервіс, про який ви не знаєте, обов’язково прочитайте його опис у документації вашого дистрибутива. Те, що не потрібно на десктопі, може бути критично важливим для сервера.

Замість висновків

Щоб витиснути з системи максимум, зверніть увагу на ці нюанси:

  • Команда systemd-analyze plot > boot.svg створить графічну схему завантаження. Відкрийте її у браузері — там наочно видно, який сервіс гальмує решту.
  • Якщо програма вантажиться занадто довго, перевірте її логи: journalctl -u назва_сервісу. Часто причина затримки — звичайна помилка конфігурації.
  • Перевірте systemd-analyze critical-chain. Це допоможе зрозуміти, які залежності заважають системі швидше вийти на робочий стіл.

Пам’ятайте, що Linux — це конструктор. І ми обожнюємо в ньому розбиратися. 

На курсах ITEDU ми проходимо шлях від перших команд у терміналі до складних налаштувань серверів та автоматизації. Якщо ви хочете розуміти логіку системи, а не просто копіювати команди з мережі — чекаємо вас на навчанні.

Залишити відповідь

Дякуємо, що поділились