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)
- Les procfs plus anciens qui montent
/proc
(vérifier viamount -l -t proc
) - Les sysfs plus récents qui montent
/sys
(vérifiez viamount -l -t sysfs
)
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 noyauis 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