Dans cette leçon, tu vas découvrir comment analyser et optimiser le temps de démarrage de ton système Linux grâce à systemd-analyze. Un démarrage lent peut cacher des services inutiles ou des configurations problématiques.
systemd-analyze est un outil fourni avec systemd qui permet de mesurer et diagnostiquer le temps nécessaire au démarrage du système. Il montre exactement combien de temps chaque étape prend, du firmware BIOS/UEFI jusqu'à l'écran de connexion.
Ce qu'on peut analyser : - Temps total du démarrage - Durée du firmware (BIOS/UEFI) - Durée du chargeur d'amorçage (GRUB) - Durée du-userspace (services systemd) - Durée du gestionnaire de connexion (GDM, LightDM...)
systemd-analyze
Exemple de sortie :
Lecture : - kernel → Temps de chargement du noyau Linux - userspace → Temps nécessaire pour démarrer tous les services - graphical.target → Moment où l'interface graphique apparaît
systemd-analyze blame
Cette commande liste tous les services dans l'ordre décroissant de leur temps de démarrage :
Les services en haut de la liste sont les plus longs — c'est là qu'il faut chercher des optimisations.
systemd-analyze plot > demarrage.svg
Puis ouvre le fichier avec un navigateur :
xdg-open demarrage.svg
Tu obtiens une timeline visuelle montrant chaque service sur une barre temporelle. C'est idéal pour identifier en un coup d'œil où le temps est perdu.
systemd-analyze critical-chain
Affiche la chaîne critique — le chemin le plus long de services dépendants qui détermine la durée totale du démarrage :
Si un service inconnu prend beaucoup de temps, vérifie son utilité :
# Voir la description d'un service
systemctl status mon-service.service
Pour désactiver un service inutile (exemple avec bluetooth si tu n'en as pas besoin) :
# Désactiver un service au démarrage
sudo systemctl disable bluetooth.service
# Masquer complètement (ne peut plus être démarré)
sudo systemctl mask bluetooth.service
# Éditer la config GRUB
sudo nano /etc/default/grub
Modifie ces lignes :
Puis applique :
sudo update-grub
Systemd parallélise automatiquement les services, mais tu peux vérifier qu'un service n'attend pas inutilement :
# Voir pourquoi un service tarde
systemctl show nginx.service | grep After
Vérifie la validité de tes fichiers d'unités systemd :
systemd-analyze verify /chemin/vers/mon-service.service
Cela détecte les erreurs de syntaxe ou les options inconnues.
| Commande | Description |
|---|---|
| systemd-analyze time | Affiche les temps de démarrage |
| systemd-analyze blame | Liste les services par temps |
| systemd-analyze plot | Génère un SVG de la timeline |
| systemd-analyze critical-chain | Affiche la chaîne critique |
| systemd-analyze dot | Génère un graphe des dépendances |
| systemd-analyze dump | Affiche l'état complet des services |
Objectif : Analyse ton propre système et identifie une optimisation possible.
Étapes : 1. Ouvre un terminal et exécute systemd-analyze pour voir ton temps de démarrage total. 2. Exécute systemd-analyze blame pour identifier les 5 services les plus lents. 3. Génère un SVG avec systemd-analyze plot > ~/demarrage.svg et ouvre-le. 4. Choisis un service non essentiel et désactive-le avec sudo systemctl disable nom.service. 5. Redémarre et compare le temps avec systemd-analyze.