52 votes

Comment obtenir une liste des pilotes actifs qui sont intégrés statiquement dans le noyau Linux?

Alors que je peux utiliser lsmod pour afficher les modules du noyau actuellement actifs, comment puis-je voir quels pilotes sont intégrés statiquement dans le noyau ET actuellement actifs ?

52voto

sager89 Points 598

Vous pourriez faire un cat /lib/modules/$(uname -r)/modules.builtin

Depuis le Documentaton du Kernel

modules.builtin

Ce fichier répertorie tous les modules qui sont intégrés au noyau. Cela est utilisé par modprobe pour ne pas échouer lors de la tentative de chargement de quelque chose d'intégré.

11voto

cybernard Points 12403

Si votre système linux a un /proc/config.gz

Qui contient tous les modules construits. Copiez-le ailleurs et décompressez-le. Ouvrez le fichier, tout ce qui est suivi de "=M" est construit en tant que module. Tout ce qui est suivi de "=Y" est construit de manière statique.

hwinfo listera le "Pilote:". Vérifiez le fichier ci-dessus pour voir s'il est construit de manière statique.

À noter : Tous les pilotes construits de manière statique sont toujours chargés en mémoire et prêts à être utilisés. Sans le matériel correspondant, ils ne feront rien, mais utiliseront de la mémoire.

7voto

dturvene Points 161

La zone du module sysfs /sys/module est une vue sur tous les modules visibles par le noyau en cours d'exécution. Chaque répertoire de module a un ensemble de fichiers d'interface sysfs pour visualiser et gérer le module via l'espace utilisateur. En général, les LKMs ont un fichier refcnt, qui sera supérieur à 0 s'il est utilisé en conjonction avec un répertoire holder des modules l'utilisant. Les modules intégrés n'ont pas ce fichier (ou beaucoup d'autres comme initstate et taint.)

Essayez find /sys/module -name refcnt -printf '\n%p: ' -exec cat {} \; pour voir lesquels sont utilisés.

Sous de nombreux modules se trouve un répertoire parameters contenant les paramètres qui peuvent être visualisés et modifiés depuis l'espace utilisateur. Dans le code source, cela correspond généralement à un appel à une macro module_param. Par exemple, consultez kernel/printk.c et le module /sys/module/printk/parameters pour des réglages utiles de printk.

Toutes les entités sous /sys/module sont définies dans le framework du module de noyau. Certains sont des pilotes matériels, certains sont netfilter, certains sont des systèmes de fichiers, certains sont des outils de débogage, etc.

4voto

ls /sys/module

semble contenir tous les modules intégrés et externes.

Mais il semble également contenir quelques entrées qui ne sont pas réellement des modules : https://unix.stackexchange.com/questions/225706/are-modules-listed-under-sys-module-all-the-loaded-modules

TODO: lire la source et comprendre plus précisément ce qui y est placé.

L'avantage de cette méthode est que vous ne dépendez pas de la possibilité de trouver la configuration du noyau sous /boot ou /proc/config.gz.

0voto

twasilczyk Points 1

J'allais commenter la réponse de cybernard, mais sans réputation sur ce service StackExchange spécifique, je ne peux pas.

Pour vérifier rapidement /proc/config.gz par rapport à un module spécifique, vous n'avez pas besoin de le décompresser quelque part (utile lorsque vous ne voulez pas écrire sur une partition de votre appareil) :

$ gunzip -c /proc/config.gz | grep 8021Q
CONFIG_VLAN_8021Q=y

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X