Réponses:
modprobe
lit les modules depuis /lib/modules/$(uname -r)/modules.dep.bin
(ou sans le .bin
suffixe 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 .ko
fichier dans /lib/modules/$(uname -r)
(par exemple nvidia-current
pour le fichier dkms/nvidia-current.ko
) et alias ( modules.alias.bin
). Builtins ( modules.alias.bin
) sont également reconnus, mais comme ces modules sont chargés par défaut, il est inutile de modifier ce type de modules.
insmod
d'autre part accepte les chemins d'accès aux fichiers. Le module ne doit pas nécessairement résider /lib/modules/$(uname -r)
, mais les dépendances ne sont pas chargées automatiquement. C'est le programme le plus bas utilisé modprobe
pour charger des 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 ne doit pas nécessairement être identique à celui transmis modprobe
(pour le nvidia-current
fichier, il s'agit nvidia
par exemple).
modinfo
accepte un nom de fichier, ou le nom de fichier sans .ko
suffixe dans /lib/modules/$(uname -r)
.
modprobe
est une commande intelligente, elle cherche des dépendances lors du chargement d’un module. Supposons, si j'ai chargé un module, que des symboles soient définis dans un autre module (ce chemin de module est donné à l'intérieur du module principal). Donc, modprobe
charge le module principal et le module dépendant.
Mais si insmod
est utilisé, il ne chargera pas la dépendance et donnera donc des erreurs de compilation du type Unresolved symbols
. Dans ce cas, nous devons rechercher manuellement les modules dépendants et les charger afin de résoudre les erreurs.
L'utilitaire modprobe mérite une mention rapide. modprobe, comme insmod, charge un module dans le noyau. Elle diffère en ce sens qu’elle examinera le module à charger pour déterminer s’il fait référence à des symboles qui ne sont actuellement pas définis dans le noyau. Si de telles références sont trouvées, modprobe recherche dans le chemin de recherche de module actuel les autres modules définissant les symboles appropriés. Lorsque modprobe trouve ces modules (nécessaires au chargement du module), il les charge également dans le noyau. Si vous utilisez plutôt insmod dans cette situation, la commande échoue avec un message «symboles non résolus» dans le fichier journal système.