Comment utiliser la commande dmesg sous Linux



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.
mail 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 !