Recherche de site Web

Comment charger et décharger des modules de noyau sous Linux


Un module de noyau est un programme qui peut être chargé ou déchargé du noyau à la demande, sans nécessairement le recompiler (le noyau) ou redémarrer le système, et est destiné à améliorer les fonctionnalités du noyau.

En termes généraux de logiciels, les modules sont plus ou moins comme des plugins pour un logiciel tel que WordPress. Les plugins fournissent des moyens d'étendre les fonctionnalités du logiciel. Sans eux, les développeurs devraient créer un seul logiciel massif avec toutes les fonctionnalités intégrées dans un package. Si de nouvelles fonctionnalités sont nécessaires, elles devront être ajoutées dans les nouvelles versions d'un logiciel.

De même, sans modules, le noyau devrait être construit avec toutes les fonctionnalités intégrées directement dans l'image du noyau. Cela signifierait avoir des noyaux plus gros et les administrateurs système devraient recompiler le noyau chaque fois qu'une nouvelle fonctionnalité est nécessaire.

Un exemple simple de module est un pilote de périphérique – qui permet au noyau d'accéder à un composant/périphérique matériel connecté au système.

Lecture suggérée : Comment savoir quelle version de Linux vous utilisez

Répertorier tous les modules de noyau chargés sous Linux

Sous Linux, tous les modules se terminent par l'extension .ko et ils sont normalement chargés automatiquement lorsque le matériel est détecté au démarrage du système. Cependant un administrateur système peut gérer les modules à l'aide de certaines commandes.

Pour lister tous les modules actuellement chargés sous Linux, nous pouvons utiliser la commande lsmod (list modules) qui lit le contenu de /proc/modules comme ceci.

lsmod
Module                  Size  Used by
rfcomm                 69632  2
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
bnep                   20480  2
rtsx_usb_ms            20480  0
memstick               20480  1 rtsx_usb_ms
btusb                  45056  0
uvcvideo               90112  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
videobuf2_vmalloc      16384  1 uvcvideo
btintel                16384  1 btusb
videobuf2_memops       16384  1 videobuf2_vmalloc
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
media                  24576  2 uvcvideo,videodev
....

Comment charger et décharger (supprimer) des modules de noyau sous Linux

Pour charger un module noyau, nous pouvons utiliser la commande insmod (insérer un module). Ici, nous devons spécifier le chemin complet du module. La commande ci-dessous insérera le module speedstep-lib.ko.

insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Pour décharger un module du noyau, nous utilisons la commande rmmod (supprimer le module). L'exemple suivant déchargera ou supprimera le module speedstep-lib.ko.

rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Comment gérer les modules du noyau à l'aide de la commande modprobe

modprobe est une commande intelligente pour lister, insérer et supprimer des modules du noyau. Il recherche dans le répertoire du module /lib/modules/$ (uname -r) tous les modules et fichiers associés, mais exclut les fichiers de configuration alternatifs dans /etc/modprobe.d répertoire.

Ici, vous n’avez pas besoin du chemin absolu d’un module ; c'est l'avantage d'utiliser modprobe par rapport aux commandes précédentes.

Pour insérer un module, indiquez simplement son nom comme suit.

modprobe speedstep-lib

Pour supprimer un module, utilisez l'indicateur -r comme ceci.

modprobe -r speedstep-lib

Remarque : Sous modprobe, la conversion automatique du trait de soulignement est effectuée, il n'y a donc aucune différence entre _ et tandis que saisir les noms des modules.

Pour plus d'informations et d'options d'utilisation, lisez la page de manuel de modprobe.

man modprobe

N'oubliez pas de consulter :

  1. Comment modifier les paramètres d'exécution du noyau de manière persistante et non persistante
  2. Comment installer ou mettre à niveau vers la dernière version du noyau dans CentOS 7
  3. Comment mettre à niveau le noyau vers la dernière version dans Ubuntu

C'est tout pour le moment! Avez-vous des idées utiles que vous souhaiteriez que nous ajoutions à ce guide ou des questions, utilisez le formulaire de commentaires ci-dessous pour nous les envoyer.