5 votes

Où sont installés les modules du noyau ?

J'essaie de trouver des modules du noyau Linux sur ma carte d'azote.

J'ai décompressé la configuration du noyau à partir de /proc/config.gz et je vois que le noyau a été compilé avec beaucoup de modules.

Je n'en vois qu'un seul dans /vendor/lib/modules , zéro dans /system/lib/modules .

Quelqu'un peut-il expliquer où sont installés les modules, quelle est la procédure pour installer les modules ?

6voto

Irfan Latif Points 16863

Il y a deux façons de construire les modules du noyau Linux : 1. en tant que partie du binaire exécutable du noyau (image compressée), c'est-à-dire avec CONFIG_*=y au moment de la construction, ou 2. en tant qu'objet distinct du noyau ( .ko ) qui peuvent être chargées et déchargées sous certaines conditions, c'est-à-dire construites avec CONFIG_*=m options.
Dans le second cas, le .ko Les fichiers sont placés à un ou plusieurs endroits standard, généralement à l'adresse suivante /lib/modules/ sous Linux et son équivalent sous Android /system/lib/modules/ o /vendor/lib/modules/ . Ces chemins sont codés en dur dans les binaires qui les chargent, par ex. insmod , modprobe .

Sur les versions pré-Pie ( 1 ) Par défaut, le noyau Android est construit sans option. CONFIG_MODULES=y Il n'y a donc pas de module de noyau construit en tant que .ko qui peuvent être chargées ou déchargées avec insmod , modprobe o rmmod comme c'est le cas avec les distros Linux standard. Ils ne sont pas non plus exposés à travers /proc/modules d'où lsmod lit l'information. Cependant, chaque composant du noyau qui peut être construit en tant que module possède une entrée dans le fichier /sys/module .

Maintenant, ces modules qui sont compilés et chargés en tant que .ko a un fichier correspondant /sys/module/<module>/initstate que d'autres n'ont pas. Vous pouvez confirmer de cette façon s'il y a des modules chargés :

~$ ls /sys/module/*/initstate

1voto

Les modules du noyau sont un morceau de code qui se charge dans la mémoire du noyau. Il est composé d'au moins deux fonctions comme int, cleanup. Si vous voulez voir quels modules sont chargés dans la mémoire du noyau, il suffit de taper les commandes : lsmod o cat /proc/modules . Si vous voulez trouver les modules du noyau dans toute la mémoire de la partition système : find / -name "*.ko" .

Charger le module du noyau en mémoire

insmod hello.ko

Suppression du module du noyau

rmmod hello.ko

pour plus d'informations, voir dmesg log .

androidalle.com

AndroidAlle est une communauté de androiders 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