Le noyau Linux est chargé en mémoire par le chargeur de démarrage. Les modules du noyau sont chargés et déchargés dynamiquement à la demande. Ils fournissent des pilotes de périphériques pour permettre au noyau d'accéder au nouveau matériel, prennent en charge différents types de systèmes de fichiers et étendent généralement les fonctionnalités du noyau.
Liste des modules de noyau chargés
Pour répertorier les modules du noyau actuellement chargés dans le noyau, utilisez le lsmod commande. Cette commande produit une sortie en lisant le /proc/modules dossier. Exemple :
# lsmod Module Size Used by ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw xfs 985426 2 libcrc32c 12644 1 xfs ...
Le utilisé par La colonne donne le nombre total de processus qui utilisent le module et les autres modules dont il dépend, suivi d'une liste de ces modules dépendants.
Paquet kmod
La commande lsmod et d'autres fichiers et utilitaires de module du noyau tels que modinfo, modprobe, depmod, insmod et rmmod sont fournis par le package kmod :
# rpm -qf /sbin/lsmod kmod-20-9.el7.x86_64
Pour lister tous les fichiers fournis par le package kmod, entrez :
# rpm -ql kmod /etc/depmod.d /etc/depmod.d/dist.conf /etc/modprobe.d /usr/bin/kmod /usr/lib/modprobe.d /usr/sbin/depmod /usr/sbin/insmod /usr/sbin/lsmod /usr/sbin/modinfo /usr/sbin/modprobe /usr/sbin/rmmod /usr/sbin/weak-modules /usr/share/bash-completion/completions/kmod /usr/share/doc/kmod-20 /usr/share/doc/kmod-20/COPYING /usr/share/doc/kmod-20/NEWS /usr/share/doc/kmod-20/README /usr/share/doc/kmod-20/TODO /usr/share/man/man5/depmod.d.5.gz /usr/share/man/man5/modprobe.conf.5.gz /usr/share/man/man5/modprobe.d.5.gz /usr/share/man/man5/modules.dep.5.gz /usr/share/man/man5/modules.dep.bin.5.gz /usr/share/man/man8/depmod.8.gz /usr/share/man/man8/insmod.8.gz /usr/share/man/man8/kmod.8.gz /usr/share/man/man8/lsmod.8.gz /usr/share/man/man8/modinfo.8.gz /usr/share/man/man8/modprobe.8.gz /usr/share/man/man8/rmmod.8.gz
Détails du module de liste
La commande modinfo affiche des informations détaillées sur un module spécifique du noyau. Par exemple, pour afficher des informations sur le module du noyau iptables, saisissez :
# modinfo ip_tables filename: /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko description: IPv4 packet filter author: Netfilter Core Team [[email protected]] license: GPL rhelversion: 7.3 srcversion: EDBAB32FC38D6942C83A4B1 depends: intree: Y vermagic: 3.10.0-514.el7.x86_64 SMP mod_unload modversions signer: CentOS Linux kernel signing key sig_key: D4:88:63:A7:C1:6F:CC:27:41:23:E6:29:8F:74:F0:57:AF:19:FC:54 sig_hashalgo: sha256
ici ,
nom du fichier :Le chemin absolu du fichier objet du noyau
description :La courte description du module
alias :Les noms d'alias internes pour le module, le cas échéant
dépend :Une liste de modules séparés par des virgules dont dépend ce module, le cas échéant
parm :Le nom du paramètre et une courte description
Les modules sont chargés depuis /lib/modules/[kernel_version]/kernel annuaire. Par exemple, pour afficher le chemin absolu du fichier objet du noyau ip_tables, :
# modinfo -n ip_tables /lib/modules/3.10.0-514.el7.x86_64/kernel/net/ipv4/netfilter/ip_tables.ko
Charger et décharger les modules du noyau
Charger les modules
Les modules du noyau sont chargés à l'aide de la commande modprobe. Le gestionnaire de périphériques du noyau Linux, udev, utilise modprobe pour charger les pilotes du matériel détecté automatiquement. Par exemple pour charger le module noyau ip_tables :
# modprobe ip_tables
Pour vérifier que le module a bien été chargé :
# lsmod | grep ip_tables ip_tables 27115 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
Les modules dépendants sont chargés en premier. Utilisez modprobe –v (verbeux) pour afficher la résolution des dépendances lors du chargement d'un module du noyau. Par exemple :
# modprobe -v nfs insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/fscache/fscache.ko insmod /lib/modules/3.10.0-514.el7.x86_64/kernel/fs/nfs/nfs.koRemarque :modprobe utilise la commande insmod pour charger les modules dans le noyau. N'utilisez pas insmod, cependant, car cette commande ne résout pas les dépendances.
Modules de déchargement
Déchargez les modules du noyau en utilisant le modprobe –r commande. Vous pouvez également utiliser l'option détaillée. Par exemple, pour décharger le module du noyau nfs, entrez :
# modprobe -rv nfs rmmod nfs rmmod fscacheRemarque :La commande modprobe –r utilise rmmod pour décharger les modules. Mais comme pour insmod, il n'est pas recommandé d'utiliser rmmod directement pour décharger les modules du noyau.
Les modules sont déchargés dans l'ordre inverse, le module noyau nfs.ko étant déchargé en premier, suivi des modules dont il dépendait. Les modules utilisés par un processus ou les modules requis par d'autres modules chargés ne sont pas déchargés.
Paramètres du module noyau
Tout comme le noyau peut accepter des paramètres de temps de démarrage pour modifier le comportement du noyau, les modules du noyau peuvent également accepter des paramètres pour modifier leur comportement. La syntaxe pour passer des paramètres à un module du noyau avec modprobe est :
# modprobe [module_name] [parameter=value]
Plusieurs paires paramètre=valeur peuvent être transmises en séparant les paires par des espaces. Assurez-vous que le module n'est pas déjà chargé, car modprobe ne recharge pas le module.
Répertoire de configuration pour modprobe
Le répertoire de configuration de modprobe est /etc/modprobe.d. Créez des fichiers *.conf dans /etc/modprobe.d pour :
– Spécifier les options
– Créer des alias
– Remplacer le comportement normal de modprobe
– Mettre les modules du noyau sur liste noire
Le format de ces fichiers .conf est une commande par ligne. Les commandes valides à utiliser dans ces fichiers sont les suivantes :
alias, options, install, remove, blacklist
Alias
Utilisez la syntaxe alias alias_name module_name pour créer des noms alternatifs pour les modules du noyau. Vous pouvez également utiliser des caractères génériques du shell dans les noms d'alias. Exemple :
alias usbdevfs usbcore
Options
Utilisez les options de syntaxe nom_module option(s) pour ajouter des options à nom_module. Exemple :
options b43 nohwcrypt=1 qos=0
Installer
Utilisez la syntaxe install module_name command(s) pour indiquer à modprobe d'exécuter des commandes shell plutôt que d'insérer le module dans le noyau. Exemple :
install net-pf-6 /bin/true
Supprimer
Ceci est similaire à la commande install, sauf qu'elle est invoquée lorsque "modprobe –r" est exécuté. Utilisez la syntaxe remove module_name command(s) pour indiquer à "modprobe –r" d'exécuter des commandes shell plutôt que de décharger le module du noyau.
Liste noire
Utilisez la syntaxe blacklist module_name pour indiquer à modprobe d'ignorer les alias internes d'un module. Les alias internes sont ceux vus lors de l'utilisation de la commande modinfo [module_name]. Le mot-clé de liste noire est généralement utilisé lorsque le matériel associé n'est pas nécessaire, ou lorsque deux modules ou plus prennent en charge les mêmes périphériques, ou lorsqu'un module prétend à tort prendre en charge un périphérique.
Reportez-vous à la page de manuel modprobe.d pour plus d'informations.
# man modprobe.d