Aller au contenu

Analyse de la Configuration Actuelle du Noyau

Le noyau Linux stocke ses informations en deux endroits via des systèmes de fichiers spéciaux : (sommaire)

Attention

Soyez prudent si vous examinez les fichiers mentionnés ici, les modifier peut changer le comportement du noyau en cours d'exécution !

Ces deux interfaces vous permettent de visualiser et de modifier les paramètres du noyau en cours d'exécution.

Notez que si vous exécutez un ls -l sur certains de ces fichiers, ils apparaissent comme ayant une longueur "0", mais si vous les extrayez avec cat, ils contiennent en fait des données. La plupart d'entre eux sont ASCII et modifiables, mais certains sont binaires. Dans les deux cas, des commandes comme file ou stat renvoient généralement simplement "fichier vide" ou "0" pour la taille, bien qu'ils afficheront d'autres informations.

Les programmes prédestinés et standards pour interagir avec ces fonctions sont lsmod, modinfo, et sysctl, entre autres.

sysctl -a | grep -i <keyword>
lsmod | grep -i <keyword>
modinfo <module>

Voyez ce que vous utilisez actuellement avec la version "kernel release" :

uname -r et remplacer sa valeur retournée dans les commandes en utilisant $(uname -r)

RHEL et distributions dérivées (Fedora, CentOS Stream, Scientific Linux, RockyLinux, Almalinux, et autres) stocke également la configuration utilisée pour amorcer les noyaux installés dans le répertoire /boot utilisé par Grub2 comme fichiers ASCII :

/boot/config-<kernel-release>

Pour vérifier la configuration du noyau en cours d'exécution pour une valeur particulière:

cat /boot/config-$(uname -r) | grep -i <keyword>

Les résultats suivants devraient être affichés :

  • =m si compilé en tant que module de noyau
  • =y si compilé statiquement dans le noyau
  • is not set si ce paramètre a été commenté
  • une valeur numérique
  • une valeur de chaîne entre guillemets

Certaines distributions, comme Gentoo et Arch, utilisent le module du noyau configs pour fournir par défaut /proc/config.gz :

zcat /proc/config.gz | grep -i <keyword>
zgrep <keyword> /proc/config.gz

Pour toute distribution, si votre noyau en cours d'exécution a défini à la fois CONFIG_IKCONFIG et CONFIG_IKCONFIG_PROC et si

ls -lh /sys/module/configs

existe et est exécutable (interrogeable dans le cas d'un répertoire), vous pouvez alors créer /proc/config.gz avec cette commande si elle n'est pas présente :

modprobe configs

Dépôts activés

Ce document ne couvre pas actuellement les paquets du noyau qui pourraient provenir de repos non par défaut tels que :

appstream-debug, appstream-source, baseos-debug, baseos-source ou devel

Les paquets kernel-devel installent le fichier de configuration utilisé pour compiler chaque paquet de noyau standard installé en tant que fichier ASCII à l'emplacement suivant :

/usr/src/kernels/<kernel-release>/.config

Ce fichier est plus couramment accédé par un chemin symbolique fourni par les paquets kernel-core :

/lib/modules/<kernel-release>/build/ -> /usr/src/kernels/<kernel-release>/

Si vous avez des paquets kernel-debug-devel installés, vous aurez également ce répertoire :

 /usr/src/kernels/<kernel-release>+debug/

Vous pouvez regarder dans l'un des éléments suivants pour plus de détails sur les valeurs de configuration utilisées pour construire un noyau installé :

/lib/modules/<kernel-release>/config
/lib/modules/<kernel-release>/build/.config
/usr/src/kernels/<kernel-release>/.config
/usr/src/kernels/<kernel-release>+debug/.config

Les modules configurés pour le noyau en cours d'exécution, s'ils sont compilés comme internes (i.e. statiquement dans le noyau lui-même) ou dans un module chargeable, sont listés par sous-répertoires nommés comme nom de module dans :

/sys/module/

Pour chaque version du noyau installée, vous pouvez examiner ces fichiers pour voir quelles sont les valeurs compilées dans ce noyau, et quelle version de GCC a été utilisée pour la compiler :

cat /lib/modules/$(uname -r)/config | grep -i <keyword>
cat /lib/modules/$(uname -r)/build/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)+debug/.config | grep -i <keyword>
ls -lh /sys/module/ | grep -i <keyword>

Vous pouvez vérifier les dépendances du module de noyau dans le fichier :

/lib/modules/<kernel-release>/modules.dep

mais il est plus facile de lire ou d'analyser la sortie du champ "Used-by" dans lsmod.

Référence

depmod, ls, lsmod, modinfo, modprobe, modules.dep, namespaces, procfs, sysctl, sysfs, uname

Author: David Hensley

Contributors: Steven Spencer