Y a-t-il des différences entre insmod et modprobe?
Réponses
Trop de publicités?modprobe
lit les modules depuis /lib/modules/$(uname -r)/modules.dep.bin
(ou sans le suffixe .bin
si l'autre fichier n'est pas disponible). À partir du même fichier, les dépendances sont chargées.
modprobe
accepte le nom d'un fichier .ko
dans /lib/modules/$(uname -r)
(par exemple nvidia-current
pour le fichier dkms/nvidia-current.ko
) et les alias (modules.alias.bin
). Les fonctionnalités intégrées (modules.alias.bin) sont également reconnues, mais étant donné que ces modules sont chargés par défaut, il n'est pas nécessaire de modprober ce type de modules.
insmod
d'autre part accepte des chemins vers des fichiers. Le module n'a pas besoin de résider dans /lib/modules/$(uname -r)
, mais les dépendances ne sont pas chargées automatiquement. Il s'agit du programme inférieur utilisé par modprobe
pour charger les modules.
D'autres programmes liés aux modules sont rmmod
et modinfo
.
rmmod
supprime un nom de noyau basé sur le nom de /proc/modules
. Ce nom n'a pas nécessairement à être le même que celui passé à modprobe
(pour le fichier nvidia-current
, cela serait nvidia
par exemple).
modinfo
accepte un nom de fichier, ou le nom de fichier sans le suffixe .ko
dans /lib/modules/$(uname -r)
.
modprobe
est une commande intelligente, elle recherche les dépendances lors du chargement d'un module. Supposons que j'ai chargé un module qui a des symboles définis dans un autre module (le chemin de ce module est donné à l'intérieur du module principal). Ainsi, modprobe
charge le module principal et le module dépendant.
Mais si insmod
est utilisé, il ne chargera pas la dépendance, ce qui entraînera des erreurs de compilation telles que Symboles non résolus
. Dans ce cas, nous devons rechercher manuellement le module dépendant et les charger pour résoudre les erreurs.
L'utilitaire modprobe mérite une brève mention. modprobe, comme insmod, charge un module dans le noyau. Il diffère en ce qu'il examinera le module à charger pour voir s'il fait référence à des symboles qui ne sont pas actuellement définis dans le noyau. Si de telles références sont trouvées, modprobe recherche d'autres modules dans le chemin de recherche des modules actuels qui définissent les symboles pertinents. Lorsque modprobe trouve ces modules (qui sont nécessaires au module en cours de chargement), il les charge également dans le noyau. Si vous utilisez insmod dans cette situation à la place, la commande échoue avec un message "symboles non résolus" laissé dans le fichier journal du système
La commande modprobe offre plus de fonctionnalités que les utilitaires plus basiques insmod et rmmod. modprobe ajoute ou supprime intelligemment un module du noyau Linux. Notez que, par commodité, il n'y a pas de différence entre _ et - dans les noms de module (une conversion automatique des underscores est effectuée). modprobe recherche dans le répertoire du module /lib/modules/uname -r
pour tous les modules et autres fichiers, à l'exception des fichiers de configuration facultatifs dans le répertoire /etc/modprobe.d (certaines distributions utilisent le fichier /etc/modprobe.conf à la place).
- Réponses précédentes
- Plus de réponses