Comment vérifier si un module noyau est chargé 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 l'état des modules noyau (kernel modules) dans Linux. Vous allez explorer trois méthodes essentielles : lister les modules actuellement chargés en utilisant lsmod, vérifier si un module peut être chargé et ses dépendances sans le charger réellement en utilisant modprobe --dry-run, et afficher des informations détaillées sur un module spécifique avec modinfo. Ces techniques sont cruciales pour comprendre quels composants du noyau sont actifs et gérer les dépendances des modules sur votre système.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") linux/PackagesandSoftwaresGroup -.-> linux/software("Linux Software") subgraph Lab Skills linux/echo -.-> lab-558721{{"Comment vérifier si un module noyau est chargé sous Linux"}} linux/ls -.-> lab-558721{{"Comment vérifier si un module noyau est chargé sous Linux"}} linux/ps -.-> lab-558721{{"Comment vérifier si un module noyau est chargé sous Linux"}} linux/service -.-> lab-558721{{"Comment vérifier si un module noyau est chargé sous Linux"}} linux/software -.-> lab-558721{{"Comment vérifier si un module noyau est chargé sous Linux"}} end

Lister les modules chargés avec lsmod

Dans cette étape, vous apprendrez à lister les modules noyau (kernel modules) actuellement chargés en utilisant la commande lsmod.

Le noyau Linux (Linux kernel) est le cœur du système d'exploitation. Il gère les ressources du système et constitue un pont entre le matériel et le logiciel. Les modules noyau sont des morceaux de code qui peuvent être chargés et déchargés dans le noyau à la demande. Ils étendent les fonctionnalités du noyau sans nécessiter un redémarrage du système. Cela est particulièrement utile pour ajouter la prise en charge de nouveaux matériels ou de systèmes de fichiers.

Pour voir quels modules sont actuellement chargés dans le noyau, ouvrez votre terminal et tapez la commande suivante :

lsmod

Appuyez sur Entrée.

Vous verrez une liste des modules, leur taille et le nombre d'autres modules qui les utilisent. La sortie ressemblera à ceci (la liste exacte variera en fonction du système et des pilotes chargés) :

Module                  Size  Used by
fuse                  143360  3
snd_seq_midi           20480  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_rawmidi            40960  1 snd_seq_midi
snd_seq                77824  3 snd_seq_midi,snd_seq_midi_event,snd_rawmidi
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
... (many more lines)

Décortiquons les colonnes :

  • Module : Le nom du module noyau.
  • Size : La taille du module en octets.
  • Used by : Le nombre d'autres modules qui utilisent actuellement ce module. Si ce nombre est 0, le module n'est actuellement utilisé par aucun autre module.

Cette commande est essentielle pour comprendre quels pilotes et composants du noyau sont actifs sur votre système.

Maintenant, essayez d'exécuter la commande lsmod dans votre terminal.

Cliquez sur Continuer pour passer à l'étape suivante.

Vérifier l'état d'un module avec modprobe --dry-run

Dans cette étape, vous apprendrez à utiliser la commande modprobe avec l'option --dry-run pour vérifier si un module peut être chargé et quels autres modules il dépend, sans le charger réellement.

La commande modprobe est utilisée pour ajouter ou supprimer des modules du noyau Linux (Linux kernel). Elle est plus sophistiquée que les anciennes commandes insmod et rmmod car elle prend en compte les dépendances des modules. Lorsque vous essayez de charger un module avec modprobe, il chargera automatiquement tous les autres modules dont le module demandé a besoin.

L'option --dry-run est très utile pour les tests. Elle indique à modprobe de passer par le processus de résolution des dépendances et de vérifier si le module peut être chargé, mais il ne chargera pas réellement le module dans le noyau. Cela vous permet de voir s'il y a des problèmes ou des dépendances manquantes avant d'apporter des modifications au système en cours d'exécution.

Essayons de vérifier l'état d'un module courant, par exemple, le module fuse, qui est souvent utilisé pour les systèmes de fichiers en espace utilisateur (user - space filesystems).

Tapez la commande suivante dans votre terminal :

modprobe --dry-run fuse

Appuyez sur Entrée.

Si le module fuse et ses dépendances sont disponibles, vous pourriez voir une sortie similaire à celle-ci :

modprobe: INFO: could not insert 'fuse': File exists

Cette sortie indique que le module fuse est probablement déjà chargé (comme vu dans l'étape précédente avec lsmod), et modprobe signale qu'il ne peut pas l'insérer à nouveau car il existe déjà. L'option --dry-run effectue toujours la vérification des dépendances même si le module est déjà chargé.

Si le module n'était pas chargé et pouvait être chargé, la sortie pourrait être vide ou indiquer les modules qui seraient chargés. S'il y avait des problèmes, modprobe les signalerait ici.

L'utilisation de --dry-run est un moyen sûr de tester le chargement de modules sans affecter l'état de votre système.

Maintenant, essayez d'exécuter vous - même la commande modprobe --dry-run fuse.

Cliquez sur Continuer pour passer à l'étape suivante.

Afficher les détails d'un module avec modinfo

Dans cette étape, vous apprendrez à obtenir des informations détaillées sur un module noyau (kernel module) spécifique en utilisant la commande modinfo.

Alors que lsmod vous montre quels modules sont chargés, modinfo fournit beaucoup plus de détails sur un fichier de module, qu'il soit chargé ou non. Ces informations incluent l'auteur du module, sa description, sa licence, ses paramètres et ses dépendances.

Utilisons modinfo pour examiner à nouveau le module fuse.

Tapez la commande suivante dans votre terminal :

modinfo fuse

Appuyez sur Entrée.

Vous verrez une sortie complète sur le module fuse, similaire à ceci :

filename:       /lib/modules/5.15.0-113-generic/kernel/fs/fuse/fuse.ko
license:        GPL
description:    Filesystem in Userspace
author:         Miklos Szeredi <[email protected]>
alias:          devname:fuse
alias:          char-major-10-229
alias:          fs-fuse
depends:
retpoline:      Y
intree:         Y
name:           fuse
vermagic:       5.15.0-113-generic SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Ubuntu Kernel Module Signing Authority
sig_key:        ...
sig_hashalgo:   sha512
signature:      ...
parm:           max_user_bgreq:Maximum number of pending background requests (uint)
parm:           max_user_cong_req:Maximum number of pending congested background requests (uint)
parm:           max_user_inline_write:Maximum size of inline write data (uint)

Examinons certains des champs clés :

  • filename : Le chemin vers le fichier de module sur le système de fichiers.
  • license : La licence sous laquelle le module est distribué (par exemple, GPL).
  • description : Une brève description de ce que fait le module.
  • author : L'auteur(s) du module.
  • depends : Une liste des autres modules dont ce module dépend.
  • parm : Des informations sur les paramètres qui peuvent être passés au module lors de son chargement pour modifier son comportement.

modinfo est un outil inestimable pour résoudre les problèmes liés aux modules ou simplement pour en savoir plus sur les composants de votre noyau Linux.

Maintenant, essayez d'exécuter vous - même la commande modinfo fuse pour voir les détails du module fuse.

Cliquez sur Continuer pour terminer ce laboratoire.

Résumé

Dans ce laboratoire, vous avez appris à vérifier l'état des modules noyau (kernel modules) sous Linux. Vous avez commencé par utiliser la commande lsmod pour lister tous les modules noyau actuellement chargés, en comprenant les colonnes de la sortie qui indiquent le nom du module, sa taille et le nombre d'utilisations.

Vous avez ensuite exploré la commande modprobe avec l'option --dry-run pour simuler le chargement d'un module et identifier ses dépendances sans le charger réellement. Enfin, vous avez appris à utiliser la commande modinfo pour afficher des informations détaillées sur un module noyau spécifique, y compris sa description, son auteur, sa licence et ses paramètres. Ces commandes sont des outils fondamentaux pour la gestion et la résolution de problèmes liés aux modules noyau sur un système Linux.