====== Optimizarea timpului de pornire ======
Dacă ai un calculator cu Linux și observi că durează mai mult decât te-ai aștepta până ajungi la desktop, nu e neapărat vina hardware-ului. De cele mai multe ori, problema vine din interior: câteva servicii pornesc la boot fără să fie necesare, sau unele stau în calea altora care ar trebui să fie gata mai repede. Vestea bună este că Linux nu ascunde nimic - toate informațiile sunt disponibile, trebuie doar să știi unde să le cauți.
Această pagină explică cum să analizezi procesul de pornire, cum să identifici serviciile problematice și cum să le dezactivezi în siguranță, cu sau fără terminal.
===== Instrumentul principal: systemd-analyze =====
Pe orice distribuție modernă care folosește **systemd**, există un instrument inclus numit ''systemd-analyze''. Nu necesită nicio instalare suplimentară și îți oferă o imagine completă a procesului de boot, împărțit pe etape.
==== Timpul total de pornire ====
Cea mai simplă comandă, rulată fără argumente, îți arată cât a durat ultima pornire:
systemd-analyze
Rezultatul arată cam așa:
Startup finished in 4.2s (firmware) + 1.1s (loader) + 2.3s (kernel) + 8.7s (userspace) = 16.3s
Cele patru etape sunt:
* **firmware** - timpul petrecut în BIOS/UEFI, înainte ca sistemul de operare să preia controlul
* **loader** - timpul petrecut în bootloader (GRUB, systemd-boot etc.)
* **kernel** - inițializarea kernel-ului Linux și a hardware-ului de bază
* **userspace** - lansarea tuturor serviciilor sistemului; aici se pierde, de obicei, cel mai mult timp
Dacă folosești UEFI și un bootloader compatibil (systemd-boot sau GRUB modern), vei vedea și etapele de firmware și loader în rezultat. Pe sisteme mai vechi cu BIOS, acestea pot lipsi din raport.
==== Lista serviciilor, sortată după timp ====
Comanda ''blame'' îți arată toate serviciile care au pornit la ultimul boot, ordonate de la cel mai lent la cel mai rapid:
systemd-analyze blame
Rezultatul arată ceva de genul:
8.430s NetworkManager-wait-online.service
3.210s plymouth-quit-wait.service
2.180s dev-sda1.device
1.450s udisks2.service
980ms ModemManager.service
640ms avahi-daemon.service
...
Un serviciu cu un timp mare în această listă nu înseamnă automat că el este cel care îți ține sistemul pe loc. Multe servicii rulează **în paralel** cu altele și nu blochează nimic. ''blame'' îți dă o imagine de ansamblu, dar nu te lasă să tragi concluzii definitive despre ce anume încetinește bootul.
==== Lanțul critic de dependențe ====
Aceasta este comanda cea mai utilă pentru diagnosticare. ''critical-chain'' îți arată exact care servicii se blochează unele pe altele, adică lanțul de dependențe care determină când sistemul devine cu adevărat utilizabil:
systemd-analyze critical-chain
Exemplu de rezultat:
graphical.target @9.5s
└─multi-user.target @9.5s
└─NetworkManager-wait-online.service @1.2s +8.3s
└─NetworkManager.service @1.1s +98ms
└─network-pre.target @1.1s
└─firewalld.service @0.9s +180ms
Simbolul ''@'' arată la câte secunde după start a început serviciul, iar ''+'' arată cât a durat să pornească. Serviciile care apar aici cu un timp mare sunt candidații reali pentru optimizare - spre deosebire de cele din ''blame'', acestea chiar stau în calea pornirii sistemului.
Probleme frecvente care apar în lanțul critic:
* ''NetworkManager-wait-online.service'' - serviciu care așteaptă o conexiune la rețea înainte să continue
* Servicii pentru containere (Docker, Podman etc.)
* Drivere lente sau probleme de detectare a hardware-ului
==== Diagrama vizuală a procesului de boot ====
Dacă preferi o imagine de ansamblu grafică, poți genera o diagramă în format SVG:
systemd-analyze plot > boot.svg
Fișierul rezultat se poate deschide în orice browser web sau în Inkscape și arată toate serviciile pe o axă temporală, inclusiv cât durează fiecare și care se suprapun. Este util mai ales când vrei să înțelegi mai bine cum funcționează lucrurile sau când investigezi un caz complex.
===== Cum dezactivezi serviciile inutile =====
Odată ce ai identificat serviciile care consumă timp fără niciun folos, ai la dispoziție două metode: dezactivarea normală sau mascarea.
==== Dezactivarea unui serviciu ====
Dezactivarea oprește serviciul să mai pornească automat la boot, dar îl lasă disponibil pentru a fi pornit manual oricând:
sudo systemctl disable numele-serviciului
Pentru a-l reactiva:
sudo systemctl enable numele-serviciului
==== Mascarea unui serviciu ====
Mascarea este mai radicală: împiedică serviciul să fie pornit chiar și de alte procese sau dependențe, nu doar la boot:
sudo systemctl mask numele-serviciului
Pentru a-l demasca:
sudo systemctl unmask numele-serviciului
==== Servicii frecvent dezactivate fără probleme ====
Acestea sunt servicii pe care mulți utilizatori le au activate implicit, deși nu le folosesc:
^ Serviciu ^ Ce face ^ Când poți dezactiva ^
| ''bluetooth.service'' | Manager Bluetooth | Dacă nu folosești niciun dispozitiv Bluetooth |
| ''cups.service'' | Daemon pentru imprimantă | Dacă nu ai imprimantă conectată |
| ''avahi-daemon.service'' | Descoperire automată de servicii în rețea | Pe sisteme simple, fără nevoie de mDNS |
| ''ModemManager.service'' | Manager pentru modemuri mobile | Dacă nu folosești un modem USB sau SIM |
| ''NetworkManager-wait-online.service'' | Așteaptă conexiunea la rețea | Pe sisteme desktop unde rețeaua nu e critică la boot |
Înainte de a dezactiva orice serviciu, verifică ce dependențe are cu ''systemctl cat numele-serviciului'' și ''systemd-analyze critical-chain numele-serviciului''. Dezactivarea unui serviciu de care depinde altceva important poate face sistemul să nu mai pornească corect.
===== Aplicații grafice pentru gestionarea serviciilor =====
Dacă terminalul nu este mediul tău preferat, există câteva aplicații grafice care îți permit să faci cam același lucru prin interfețe vizuale.
==== SysD Manager ====
Cea mai îngrijită opțiune disponibilă în prezent, distribuită prin Flathub și [[https://github.com/plrigaux/sysd-manager|instalabilă]] pe orice distribuție care are Flatpak:
flatpak install flathub io.github.plrigaux.sysd-manager
Oferă o interfață completă pentru gestionarea unităților systemd: vizualizarea și editarea fișierelor unit, pornirea și oprirea serviciilor, activarea și dezactivarea la boot. Este aplicația recomandată pentru utilizatorii care preferă o interfață grafică.
==== systemd-manager ====
Scrisă în Rust și construită cu GTK3, include pe lângă gestionarea serviciilor și o secțiune dedicată pentru ''systemd-analyze'', unde poți vedea timpii de boot direct în interfață. Este [[https://github.com/GuillaumeGomez/systemd-manager|disponibilă]] în AUR pentru Arch și distribuțiile derivate, și ca pachet snap pentru Ubuntu:
# Pe Arch Linux (AUR)
yay -S systemd-manager-git
# Pe Ubuntu (snap)
sudo snap install systemd-manager
==== O notă despre aplicațiile grafice ====
Și cu o interfață grafică, riscul rămâne același ca la terminal: dacă dezactivezi un serviciu de care depinde altceva important, sistemul poate ajunge să nu mai pornească deloc sau să se comporte ciudat. Interfața grafică nu te ferește de greșeli - ba chiar te poate face să apeși prea ușor pe butoane fără să înțelegi pe deplin ce faci. Comenzile din terminal, tocmai pentru că necesită să le scrii conștient, te obligă într-un fel să fii mai atent.
===== Flux de lucru recomandat =====
Dacă vrei să optimizezi bootul în mod metodic, iată pașii recomandați:
- Rulează ''systemd-analyze'' și notează timpii totali pe etape
- Rulează ''systemd-analyze blame'' și identifică serviciile cu timp mare
- Rulează ''systemd-analyze critical-chain'' și identifică ce stă efectiv în calea pornirii
- Generează opțional ''boot.svg'' pentru o imagine vizuală completă
- Cercetează fiecare serviciu suspect înainte de a-l dezactiva
- Dezactivează pe rând, nu toate deodată, și repornește între modificări ca să poți urmări efectul fiecăreia
===== Referințe =====
* [[https://www.freedesktop.org/software/systemd/man/systemd-analyze.html|Documentația oficială systemd-analyze]]
* [[https://wiki.archlinux.org/title/Improving_performance/Boot_process|ArchWiki - Improving performance/Boot process]]
* [[https://github.com/plrigaux/sysd-manager|SysD Manager pe GitHub]]
* [[https://github.com/GuillaumeGomez/systemd-manager|systemd-manager pe GitHub]]
{{tag>systemd boot optimizare servicii terminal flatpak}}