Linux / Commande modinfo : informations et paramètres d’un module

modinfo consulte les métadonnées d’un module du noyau Linux : fichier, description, licence, alias, dépendances et paramètres disponibles. Il ne charge pas le module et ne change pas ses réglages. Distinguez toujours les informations trouvées sur disque de l’état du noyau en cours et des valeurs de paramètres effectivement appliquées.

Consulter un module par son nom ou son fichier

modinfo appartient à la suite kmod. Il accepte un nom de module ou un chemin de fichier ; la notation suivante décrit la syntaxe, et le caractère | signifie un choix :

modinfo [OPTIONS] NOM_DU_MODULE|CHEMIN_DU_FICHIER

Pour examiner un module nommé overlay :

modinfo overlay

Sans chemin de fichier ni sélection de version, la recherche par nom utilise l’ensemble de modules du noyau courant, sous /lib/modules. Le nom de release du noyau est visible avec uname -r. Une commande réussie affiche les champs disponibles sous la forme nom: valeur ; tous les modules n’ont pas les mêmes champs.

Champ Ce qu’il décrit
filename Emplacement du fichier trouvé, lorsque le module est fourni séparément.
description et license Description et déclaration de licence présentes dans les métadonnées.
alias Alias déclarés, notamment pour associer des identifiants de matériel à un module.
depends Noms de modules dont celui-ci dépend.
parm Paramètres déclarés et leurs descriptions disponibles.

Si vous disposez déjà du fichier précis, donnez son chemin à la place du nom. Vous interrogez alors ce fichier : cela n’atteste ni sa présence dans le noyau courant ni sa compatibilité avec celui-ci. Ne confondez pas une lecture de métadonnées et une validation de chargement.

Sélectionner le chemin, les paramètres ou une licence

modinfo -n overlay
modinfo -p overlay
modinfo -F license nf_conntrack

-n sélectionne le champ filename ; -p sélectionne les descriptions des paramètres. -F permet de choisir un champ nommé. Le dernier exemple peut afficher GPL si le module et cette déclaration sont disponibles dans l’ensemble interrogé :

GPL

Cette sortie est un exemple conditionnel. Elle n’affirme pas qu’un module de ce nom existe dans toutes les distributions. Un champ absent peut ne produire aucune valeur et un champ répété peut produire plusieurs lignes ; n’interprétez pas automatiquement une sortie vide comme la disparition du module entier.

La présence d’un paramètre dans -p ne fournit pas nécessairement sa valeur actuelle ni l’autorisation de le modifier. L’application de paramètres dépend du module, de sa documentation et du mode de chargement. Une modification séparée peut affecter des périphériques ou des services.

Identifier l’ensemble de modules et la version visés

Après une mise à jour du noyau, plusieurs ensembles peuvent être installés alors qu’un seul noyau est en cours d’exécution. L’option -k choisit la release à interroger. Pour expliciter celle du noyau courant :

kernel_release=$(uname -r) || exit 1
modinfo -k "$kernel_release" overlay

Pour un autre noyau installé, utilisez son identifiant exact à la place de cette valeur. Le fait d’obtenir ses métadonnées ne prouve pas qu’il est démarré. Vérifiez également que vous consultez le bon système : dans un conteneur, le noyau visible et les fichiers de modules accessibles peuvent provenir de contextes différents.

La documentation Kbuild du noyau Linux décrit aussi modules.builtin, la liste des fonctions intégrées, et modules.builtin.modinfo, leurs métadonnées. Selon les fichiers installés et les outils disponibles, une fonction intégrée peut donc fournir des informations sans être un module séparément chargé.

Traiter une absence de résultat et vérifier l’état chargé

En cas de diagnostic Module ... not found, procédez dans cet ordre :

  1. Vérifiez le nom saisi ou le chemin du fichier demandé.
  2. Comparez la release sélectionnée avec uname -r et les ensembles de modules réellement installés.
  3. Vérifiez les fichiers et métadonnées des fonctions intégrées si aucun fichier module séparé n’est attendu.
  4. Si la question porte sur le chargement actuel, consultez le noyau plutôt que de conclure à partir des seuls fichiers.
lsmod | grep '^overlay[[:space:]]'

lsmod et ses colonnes de modules chargés répondent à cette dernière question. Une absence de correspondance ne suffit toujours pas à exclure une fonction intégrée au noyau. modinfo et lsmod se complètent donc sans être interchangeables.

Pour vérifier les options installées :

modinfo --version
modinfo --help

Le manuel modinfo du projet kmod détaille la recherche, -F, -k et les raccourcis de sélection de champs.