Optimizarea boot-ului și shutdown-ului pe Linux
Toate distribuțiile majore de Linux folosesc systemd ca sistem de init, ceea ce înseamnă că metodele de optimizare sunt în mare parte aceleași, indiferent de distribuție. Diferă doar serviciile specifice fiecărei distribuții care pot fi dezactivate sau amânate. Acest articol acoperă Debian, Ubuntu/Linux Mint, Arch Linux, Fedora și openSUSE.
Diagnosticarea problemelor
Primul pas este să identifici ce anume încetinește boot-ul. systemd oferă câteva unelte utile în acest sens.
Timpul total de boot:
systemd-analyze
Lista serviciilor sortate după timpul de pornire:
systemd-analyze blame
Lanțul critic - serviciile care blochează efectiv boot-ul:
systemd-analyze critical-chain
Grafic vizual al boot-ului (generat ca fișier SVG):
systemd-analyze plot > boot.svg
Deschide fișierul SVG în browser pentru a vedea o reprezentare vizuală completă a procesului de boot, cu toate serviciile și dependențele dintre ele.
Optimizări comune pentru toate distribuțiile
Acestea se aplică indiferent de distribuție, deoarece sunt configurații ale systemd însuși.
Reducerea timeout-ului la shutdown
Implicit, systemd așteaptă 90 de secunde pentru fiecare serviciu să se oprească înainte de a-l forța. Editează:
sudo nano /etc/systemd/system.conf
Adaugă sau modifică la finalul fișierului:
DefaultTimeoutStopSec=10s DefaultTimeoutAbortSec=10s ShutdownWatchdogSec=10s
Aplică modificările:
sudo systemctl daemon-reload
DefaultTimeoutStopSec- cât așteaptă systemd după trimiterea SIGTERM înainte de a trimite SIGKILLDefaultTimeoutAbortSec- timeout pentru serviciile care primesc SIGABRTShutdownWatchdogSec- dacă systemd însuși îngheață în timpul shutdown-ului, hardware watchdog-ul repornește forțat mașina
Dezactivarea NetworkManager-wait-online
Acest serviciu blochează boot-ul până când conexiunea la rețea este complet stabilită. Pe un desktop nu este necesar - aplicațiile se conectează singure când au nevoie.
sudo systemctl disable NetworkManager-wait-online.service
Atenție: Pe servere sau sisteme care rulează servicii ce depind de rețea la pornire (baze de date cu conexiuni remote, NFS, etc.), nu dezactiva acest serviciu.
Dezactivarea systemd-networkd-wait-online
Similar cu cel de mai sus, dar pentru sistemele care folosesc systemd-networkd în loc de NetworkManager:
sudo systemctl disable systemd-networkd-wait-online.service
Optimizări specifice distribuției
Servicii care pot încetini boot-ul
apt-daily.serviceșiapt-daily-upgrade.service- verificarea și instalarea actualizărilor la pornireModemManager.service- necesar doar dacă folosești un modem GSM/4Gavahi-daemon.service- descoperire de servicii în rețea locală, necesar doar în unele scenarii
Amânarea verificării pachetelor
sudo systemctl edit apt-daily.timer
Adaugă:
[Timer] OnBootSec=15min OnUnitActiveSec=1d
Același lucru pentru upgrade:
sudo systemctl edit apt-daily-upgrade.timer
[Timer] OnBootSec=20min OnUnitActiveSec=1d
Dezactivarea serviciilor inutile
Dacă nu folosești un modem:
sudo systemctl disable ModemManager.service
Dacă nu ai nevoie de descoperire automată de servicii în rețea locală:
sudo systemctl disable avahi-daemon.service
Servicii specifice Ubuntu/Mint
mintupdate-automation-upgrade.service- (Linux Mint) instalează actualizări la fiecare pornireapt-daily.service- descarcă liste de pachete la bootfwupd-refresh.service- verifică actualizări de firmwareubuntu-system-adjustments.service- ajustări specifice Ubuntuupdate-notifier-download.service- descarcă actualizări în fundal
Dezactivarea upgrade-ului automat la boot (Linux Mint)
Serviciul nu are secțiune [Install], deci disable nu funcționează complet. Folosește mask:
sudo systemctl mask mintupdate-automation-upgrade.timer sudo systemctl stop mintupdate-automation-upgrade.timer
Actualizările automate zilnice rămân active prin apt-daily-upgrade.timer, care rulează complet în fundal fără nicio intervenție manuală.
Amânarea verificării pachetelor
sudo systemctl edit apt-daily.timer
[Timer] OnBootSec=15min OnUnitActiveSec=1d
Dezactivarea serviciilor opționale
Actualizări de firmware (dacă nu ai nevoie):
sudo systemctl disable fwupd-refresh.service sudo systemctl disable fwupd.service
Servicii care pot încetini boot-ul
reflector.servicesaureflector.timer- actualizează lista de mirror-uri la boot, poate fi lentman-db.service- reindexează paginile de manual, rulează uneori la bootupdatedb.service- actualizează baza de date pentrulocate
Dezactivarea sau amânarea Reflector
sudo systemctl disable reflector.service
Poți lăsa reflector.timer activ dacă vrei actualizare periodică, sau îl poți rula manual când ai nevoie:
sudo reflector --latest 10 --sort rate --save /etc/pacman.d/mirrorlist
Activarea systemd-resolved
Pe Arch, systemd-resolved nu este activat implicit. Activarea lui poate îmbunătăți viteza de rezolvare DNS:
sudo systemctl enable --now systemd-resolved sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Compresia initramfs
Arch folosește implicit compresia zstd pentru initramfs, care e rapidă. Dacă din diverse motive folosești gzip sau bzip2, schimbarea la zstd în /etc/mkinitcpio.conf reduce timpul de decompresie la boot:
COMPRESSION="zstd"
Regenerează initramfs:
sudo mkinitcpio -P
Servicii care pot încetini boot-ul
dnf-makecache.service/dnf-makecache.timer- actualizează cache-ul DNF la bootModemManager.service- necesar doar cu modem GSM/4Gsssd.service- autentificare centralizată, necesar doar în medii enterpriseabrt*.service- raportare automată de bug-uri
Amânarea actualizării cache-ului DNF
sudo systemctl edit dnf-makecache.timer
[Timer] OnBootSec=15min OnUnitActiveSec=1d
Dezactivarea serviciilor inutile pe desktop
Raportare automată de bug-uri:
sudo systemctl disable abrtd.service sudo systemctl disable abrt-ccpp.service sudo systemctl disable abrt-oops.service
SSSD (doar dacă nu ești în rețea enterprise cu LDAP/AD):
sudo systemctl disable sssd.service
ModemManager (dacă nu ai modem):
sudo systemctl disable ModemManager.service
SELinux și boot-ul
Pe Fedora, SELinux poate adăuga timp la primul boot după o actualizare majoră, deoarece reindexează toate fișierele. Aceasta este normală și nu se repetă la fiecare boot. Nu dezactiva SELinux pentru a câștiga timp de boot - compromisul de securitate nu merită.
Servicii care pot încetini boot-ul
- Servicii legate de actualizări automate Zypper
wicked.service- alternativa openSUSE la NetworkManager, poate fi lentă la inițializare
NetworkManager vs Wicked
openSUSE folosește implicit wicked pentru gestionarea rețelei. Dacă ai instalat NetworkManager și rulezi ambele, poți dezactiva wicked:
sudo systemctl disable wicked.service sudo systemctl enable NetworkManager.service
Dezactivarea verificărilor automate de actualizări la boot
sudo systemctl disable zypper-refresh-patches.timer
Sau verifică ce timere sunt active pe sistemul tău:
systemctl list-timers
AppArmor
Similar cu SELinux pe Fedora, AppArmor pe openSUSE poate adăuga câteva secunde la boot. Nu dezactiva AppArmor pentru a câștiga timp - este un strat important de securitate.
Rezumat
| Distribuție | Serviciu problematic | Acțiune recomandată |
|---|---|---|
| Debian | apt-daily.timer | Amână la 15min după boot |
| Ubuntu/Mint | mintupdate-automation-upgrade.timer | Mask complet |
| Ubuntu/Mint | apt-daily.timer | Amână la 15min după boot |
| Arch | reflector.service | Dezactivează, rulează manual |
| Fedora | dnf-makecache.timer | Amână la 15min după boot |
| Fedora | abrtd.service | Dezactivează pe desktop |
| openSUSE | wicked.service | Înlocuiește cu NetworkManager |
| Toate | NetworkManager-wait-online | Dezactivează pe desktop |
| Toate | DefaultTimeoutStopSec | Setează la 10s în system.conf |