Comment vérifier si le débogage du noyau est activé sous Linux

LinuxLinuxBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à vérifier si le débogage du noyau (kernel debugging) est activé sous Linux. Cela implique d'explorer la configuration du noyau, de vérifier les informations de débogage et d'inspecter le système de fichiers debugfs.

Tout d'abord, vous utiliserez la commande zcat /proc/config.gz pour examiner le fichier de configuration du noyau, en recherchant des options spécifiques telles que CONFIG_LOCALVERSION à l'aide de grep. Ensuite, vous vérifierez les informations de débogage en utilisant dmesg. Enfin, vous inspecterez le système de fichiers debugfs situé à l'emplacement /sys/kernel/debug. Ces étapes vous permettront de bien comprendre comment déterminer si le débogage du noyau est activé sur votre système Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") subgraph Lab Skills linux/echo -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} linux/ls -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} linux/cat -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} linux/less -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} linux/cd -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} linux/grep -.-> lab-558940{{"Comment vérifier si le débogage du noyau est activé sous Linux"}} end

Vérifier la configuration du noyau avec zcat /proc/config.gz

Dans cette étape, nous allons explorer comment vérifier la configuration du noyau Linux en utilisant la ligne de commande. La configuration du noyau détermine quelles fonctionnalités sont intégrées au noyau et comment il se comporte.

La configuration du noyau est stockée dans un fichier nommé /proc/config.gz. Ce fichier est une version compressée de la configuration du noyau. Pour afficher le contenu de ce fichier, nous allons utiliser la commande zcat.

zcat est un utilitaire en ligne de commande qui vous permet d'afficher le contenu d'un fichier compressé sans le décompresser réellement. Il est particulièrement utile pour afficher de grands fichiers compressés, car il vous épargne le temps et l'espace disque nécessaires pour décompresser l'ensemble du fichier.

Pour vérifier la configuration du noyau, ouvrez votre terminal et tapez la commande suivante :

zcat /proc/config.gz

Cette commande affichera la configuration du noyau dans votre terminal. Comme la sortie est assez longue, elle peut défiler rapidement. Pour afficher la sortie page par page, vous pouvez rediriger la sortie vers la commande less :

zcat /proc/config.gz | less

Maintenant, vous pouvez utiliser les touches fléchées pour parcourir la configuration. Appuyez sur q pour quitter less.

Le fichier de configuration du noyau est composé d'une série de lignes, chacune définissant une option de configuration spécifique. Ces options contrôlent divers aspects du noyau, comme les pilotes matériels inclus, les protocoles de réseau pris en charge et les fonctionnalités de sécurité activées.

Recherchons une option de configuration spécifique. Par exemple, vérifions si l'option CONFIG_LOCALVERSION est définie. Cette option spécifie une chaîne de version personnalisée pour le noyau.

Pour rechercher cette option, nous pouvons utiliser la commande grep. grep est un puissant utilitaire en ligne de commande qui vous permet de rechercher des motifs spécifiques dans des fichiers texte.

Tapez la commande suivante dans votre terminal :

zcat /proc/config.gz | grep CONFIG_LOCALVERSION

Si l'option CONFIG_LOCALVERSION est définie, vous verrez une ligne similaire à celle-ci :

CONFIG_LOCALVERSION="-labex"

La valeur exacte de CONFIG_LOCALVERSION peut varier en fonction de la configuration du noyau. Si l'option n'est pas définie, grep n'affichera rien.

Vous pouvez également rechercher d'autres options de configuration. Par exemple, vous pouvez vérifier si l'option CONFIG_DEBUG_INFO est activée. Cette option active la génération d'informations de débogage, qui peut être utile pour résoudre les problèmes liés au noyau.

zcat /proc/config.gz | grep CONFIG_DEBUG_INFO

Une sortie typique serait :

CONFIG_DEBUG_INFO=y

Cela indique que les informations de débogage sont activées dans la configuration du noyau.

En examinant la configuration du noyau, vous pouvez obtenir des informations précieuses sur la configuration de votre système et les fonctionnalités activées. Ces informations peuvent être utiles pour résoudre les problèmes, optimiser les performances et personnaliser votre système pour répondre à vos besoins spécifiques.

Vérifier les informations de débogage dans dmesg

Dans cette étape, nous allons apprendre à vérifier la présence d'informations de débogage dans le tampon de messages du noyau, accessible via la commande dmesg. dmesg est un utilitaire en ligne de commande qui affiche le tampon de messages du noyau. Ce tampon contient divers messages générés par le noyau, notamment des informations de débogage, des messages d'initialisation matérielle et des messages d'erreur.

Tout d'abord, comprenons ce que sont les informations de débogage et pourquoi elles sont importantes. Les informations de débogage sont des données supplémentaires incluses dans un programme ou un noyau qui aident les développeurs à diagnostiquer et résoudre des problèmes. Elles incluent des éléments tels que les noms de fonctions, les noms de variables et les numéros de ligne, ce qui facilite le suivi de l'exécution du code et l'identification de la source des erreurs.

Pour afficher le tampon de messages du noyau, ouvrez votre terminal et tapez la commande suivante :

dmesg

Cette commande affichera le contenu du tampon de messages du noyau dans votre terminal. La sortie peut être assez longue, il est donc souvent utile de la rediriger vers un visualiseur comme less :

dmesg | less

Maintenant, vous pouvez utiliser les touches fléchées pour parcourir les messages. Appuyez sur q pour quitter less.

Pour vérifier la présence d'informations de débogage, nous allons rechercher des mots-clés ou des motifs spécifiques dans la sortie de dmesg. Par exemple, si le noyau est compilé avec le débogage activé, vous pourriez voir des messages contenant des noms de fonctions ou des numéros de ligne.

Recherchons le mot-clé debug dans la sortie de dmesg. Tapez la commande suivante dans votre terminal :

dmesg | grep debug

Cette commande affichera toutes les lignes de la sortie de dmesg qui contiennent le mot debug. Si le débogage est activé, vous pourriez voir des messages tels que :

[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.15.0-76-generic root=UUID=... ro debug
[    1.234567] ACPI: Added _OSI(Module Device)

La présence de tels messages indique qu'un certain niveau de débogage est activé dans le noyau.

Une autre façon de vérifier les informations de débogage consiste à rechercher des messages liés à des modules ou des pilotes spécifiques du noyau. Par exemple, si vous souhaitez déboguer un pilote réseau particulier, vous pouvez rechercher des messages liés à ce pilote.

Supposons que vous souhaitiez vérifier les messages de débogage liés à l'interface réseau eth0. Vous pouvez utiliser la commande suivante :

dmesg | grep eth0

Cette commande affichera toutes les lignes de la sortie de dmesg qui contiennent la chaîne eth0. Si le pilote réseau génère des messages de débogage, vous pourriez voir une sortie comme celle-ci :

[    2.345678] eth0: link up, speed 100 Mbps, full duplex
[    3.456789] eth0: received packet with invalid checksum

Ces messages peuvent fournir des informations précieuses sur le comportement du pilote réseau et vous aider à résoudre tout problème.

En examinant la sortie de dmesg et en recherchant des mots-clés ou des motifs spécifiques, vous pouvez vérifier la présence d'informations de débogage et obtenir des informations sur le fonctionnement interne du noyau et de ses modules.

Inspecter debugfs dans /sys/kernel/debug

Dans cette étape, nous allons explorer le système de fichiers debugfs, qui est un outil puissant pour les développeurs de noyau et les administrateurs système afin de déboguer et de surveiller le noyau Linux. Debugfs offre un moyen d'accéder aux structures de données internes du noyau et de contrôler certains comportements du noyau.

Debugfs est généralement monté sur /sys/kernel/debug. Naviguons jusqu'à ce répertoire dans votre terminal.

cd /sys/kernel/debug

Maintenant, listons le contenu de ce répertoire en utilisant la commande ls :

ls

Vous verrez une variété de fichiers et de répertoires. Ceux-ci représentent différents sous - systèmes et fonctionnalités du noyau. Le contenu exact de ce répertoire peut varier en fonction de la version et de la configuration de votre noyau.

De nombreux fichiers dans debugfs sont en lecture seule et fournissent des informations sur l'état interne du noyau. Certains fichiers sont accessibles en écriture et vous permettent de modifier des paramètres du noyau ou de déclencher des actions spécifiques.

Important : Soyez très prudent lorsque vous écrivez dans les fichiers de debugfs. Une modification incorrecte de ces fichiers peut entraîner une instabilité du système voire des plantages. Il est généralement recommandé de modifier les fichiers de debugfs seulement si vous savez exactement ce que vous faites.

Explorons un répertoire spécifique dans debugfs. Un répertoire courant à étudier est tracing. Ce répertoire contient des fichiers liés à l'infrastructure de tracing du noyau, qui vous permet de surveiller l'exécution du code du noyau et d'identifier les goulots d'étranglement de performance.

Naviguons jusqu'au répertoire tracing :

cd tracing

Listons le contenu du répertoire tracing :

ls

Vous verrez des fichiers tels que trace, events, options, etc. Le fichier trace contient les données de trace réelles. Vous pouvez afficher le contenu de ce fichier en utilisant la commande cat :

cat trace

La sortie sera un flux d'événements de trace, montrant l'exécution de diverses fonctions du noyau. Ces données peuvent être utiles pour comprendre le comportement du noyau et identifier les problèmes de performance.

Le répertoire events contient des informations sur les événements de trace disponibles. Vous pouvez explorer ce répertoire pour voir quels événements sont disponibles pour le tracing.

ls events

Vous verrez une liste de répertoires, chacun représentant une catégorie d'événements différente. Par exemple, le répertoire sched contient des événements liés au planificateur du noyau.

Vous pouvez explorer ces répertoires pour voir les événements spécifiques qui sont disponibles. Par exemple, pour voir les événements dans le répertoire sched :

ls events/sched

Vous verrez des fichiers tels que sched_switch, sched_wakeup, etc. Ceux-ci représentent des événements de planification spécifiques que vous pouvez tracer.

En explorant le système de fichiers debugfs, vous pouvez obtenir des informations précieuses sur le fonctionnement interne du noyau Linux et utiliser ces informations pour déboguer et surveiller votre système. N'oubliez pas d'être prudent lorsque vous modifiez des fichiers dans debugfs, car des modifications incorrectes peuvent entraîner une instabilité du système.

Enfin, retournez dans votre répertoire personnel :

cd ~/project

Résumé

Dans ce laboratoire (lab), nous avons exploré comment vérifier la configuration du noyau Linux en utilisant la ligne de commande. Nous avons appris que la configuration du noyau est stockée dans un fichier compressé /proc/config.gz, qui peut être consulté à l'aide de la commande zcat. En redirigeant la sortie de zcat vers less, il est plus facile de naviguer dans la configuration.

De plus, nous avons utilisé la commande grep pour rechercher des options de configuration spécifiques dans le fichier de configuration du noyau, comme CONFIG_LOCALVERSION, afin de déterminer si une fonctionnalité ou un paramètre particulier est activé dans le noyau.