La commande dmesg
offre une vision approfondie des processus de démarrage sous Linux. Elle permet d’examiner et de suivre les messages des périphériques matériels et des pilotes, conservés dans le tampon circulaire du noyau. Considérez-la comme un allié précieux pour le dépannage.
Comprendre le tampon circulaire de Linux
Dans les systèmes Linux et Unix, le processus de démarrage se divise en deux phases distinctes. La première, le « boot », se déroule lors de la mise sous tension de l’ordinateur.
Durant cette phase initiale, des éléments tels que le BIOS ou l’UEFI, le MBR, et GRUB, orchestrent l’initialisation du système jusqu’au chargement du noyau en mémoire. Ce dernier se connecte au disque virtuel initial (initrd ou initramfs), et systemd démarre.
Les processus de démarrage prennent ensuite le relais pour parachever l’initialisation du système d’exploitation. Au tout début, les outils de journalisation comme syslogd ou rsyslogd ne sont pas encore fonctionnels. Pour éviter de perdre les messages importants de cette phase, le noyau utilise un tampon circulaire comme mémoire tampon.
Ce tampon est une zone mémoire dédiée aux messages. De conception simple et de taille fixe, il fonctionne comme un buffer circulaire, où les nouveaux messages écrasent les plus anciens une fois qu’il est plein.
Le tampon circulaire du noyau enregistre les messages d’initialisation des pilotes, ceux du matériel, et ceux des modules du noyau. Cette collection de messages de bas niveau en fait un point de départ idéal pour investiguer les erreurs matérielles ou autres problèmes au démarrage.
Pour exploiter ces informations, utilisez la commande dmesg
.
Utiliser la commande dmesg
La commande dmesg
permet de consulter les messages contenus dans le tampon circulaire. Son utilisation requiert généralement les privilèges de superutilisateur (sudo
).
sudo dmesg
Cette commande affiche tous les messages du tampon dans la fenêtre du terminal, ce qui peut être volumineux.
Pour faciliter la lecture, il est conseillé de canaliser la sortie vers la commande less
:
sudo dmesg | less
Vous pouvez ainsi parcourir les messages et utiliser la fonction de recherche de less
(en appuyant sur « / ») pour identifier les éléments d’intérêt.
Éviter l’utilisation de sudo
Pour exécuter dmesg
sans sudo
, vous pouvez utiliser cette commande. Soyez toutefois conscient que cela autorise tout utilisateur du système à consulter ces messages :
sudo sysctl -w kernel.dmesg_restrict=0
Activer la sortie colorisée
La sortie de dmesg
est généralement colorisée. Si ce n’est pas le cas, forcez la coloration avec l’option -L
:
sudo dmesg -L
Pour une coloration permanente, utilisez :
sudo dmesg --color=always
Afficher des horodatages compréhensibles
Par défaut, dmesg
affiche des horodatages en secondes et nanosecondes depuis le démarrage du noyau. Pour un affichage plus lisible, utilisez l’option -H
(human) :
sudo dmesg -H
Cela aura deux effets : la sortie est automatiquement dirigée vers less
, et les horodatages affichent la date et l’heure à la minute près, avec les secondes et nanosecondes pour les événements au sein de cette minute.
Horodatages plus lisibles
Si la précision à la nanoseconde n’est pas nécessaire, l’option -T
(lisible par l’homme) offre des horodatages plus conviviaux :
sudo dmesg -T
Les horodatages apparaissent sous forme de dates et d’heures standard, mais avec une résolution à la minute. L’affichage n’est pas redirigé vers less
.
Suivre les événements en temps réel
L’option --follow
permet de voir les messages en direct, au fur et à mesure qu’ils sont ajoutés au tampon du noyau. Les modifications matérielles (connexion USB, Bluetooth, etc.) ou logicielles (chargement de modules du noyau) génèrent des messages. L’exécution d’une machine virtuelle provoque également l’apparition de nouvelles informations.
sudo dmesg --follow
Les nouveaux messages apparaissent au bas de la fenêtre. Pour quitter ce mode, utilisez Ctrl + C.
Même le montage d’un CD-ROM génère des messages car il s’agit d’un changement dans l’arborescence des répertoires.
Afficher les derniers messages
La commande tail
permet de récupérer les derniers messages du tampon. L’exemple ci-dessous affiche les dix derniers :
sudo dmesg | tail -10
Rechercher des termes spécifiques
En combinant dmesg
avec grep
, il est possible de rechercher des chaînes de caractères ou des motifs spécifiques. L’option -i
permet d’ignorer la casse :
sudo dmesg | grep -i usb
Pour isoler les messages relatifs au premier disque dur (sda
, qu’il soit SCSI ou SATA), ou encore une clé USB, vous pouvez utiliser :
sudo dmesg | grep -i sda
L’option -E
permet de rechercher plusieurs termes à la fois :
sudo dmesg | grep -E "memory|tty|dma"
Filtrer par niveau de journal
Chaque message du tampon du noyau est associé à un niveau d’importance :
émerg | Le système est inutilisable. |
alerte | Des mesures immédiates sont nécessaires. |
crit | Conditions critiques. |
err | Conditions d’erreur. |
avertir | Conditions d’avertissement. |
remarque | État normal mais significatif. |
info | Informationnel. |
debug | Messages de débogage. |
L’option -l
permet de filtrer les messages par niveau :
sudo dmesg -l info
Il est possible de combiner plusieurs niveaux :
sudo dmesg -l debug,notice
Filtrer par catégorie
Les messages dmesg
sont aussi classés par catégories appelées « facilités ». Les principales sont :
kern | Messages du noyau. |
utilisateur | Messages de niveau utilisateur. |
Système de messagerie. | |
démon | Démons système. |
auth | Messages de sécurité/autorisation. |
syslog | Messages internes de syslogd. |
lpr | Sous-système d’imprimante en ligne. |
news | Sous-système de nouvelles du réseau. |
L’option -f
permet de filtrer par catégorie :
sudo dmesg -f daemon
Il est possible de combiner plusieurs catégories :
sudo dmesg -f syslog, daemon
Combiner facilité et niveau
L’option -x
permet d’afficher la facilité et le niveau comme préfixes lisibles par l’homme :
sudo dmesg -x
Pourquoi utiliser dmesg ?
En résumé, dmesg
est un outil de diagnostic puissant. Il permet d’identifier les problèmes matériels, les pilotes qui ne fonctionnent pas correctement, et d’autres soucis au démarrage.
Voici comment l’utiliser :
- Consultez les messages par niveau, du plus élevé au plus bas, à la recherche d’erreurs ou d’avertissements liés au matériel concerné.
- Filtrez les messages par catégorie pour identifier des informations utiles.
- Recherchez des chaînes ou identifiants spécifiques (fabricant, modèle, etc.) avec
grep
. - Recherchez des termes génériques comme « gpu », « stockage », ou des termes tels que « échec », « échoué », ou « impossible ».
- Utilisez l’option
--follow
pour observer les messages en temps réel.
Bonne investigation !