web-dev-qa-db-fra.com

Quelle est la différence entre insmod et modprobe?

Existe-t-il des différences entre insmod et modprobe?

35
NES

Par man insmod:

La plupart des utilisateurs voudront utiliser modprobe, qui est plus intelligent et peut gérer les dépendances de modules.

28
8128

modprobe lit les modules à partir de /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 d’alias (modules.alias.bin). Les éléments intégrés (modules.alias.bin) sont également reconnus, mais comme ces modules sont chargés par défaut, il ne sert à rien de modifier ce type de modules.

insmod accepte en revanche les chemins d'accès aux fichiers. Le module ne doit pas nécessairement résider dans /lib/modules/$(uname -r), mais les dépendances ne sont pas chargées automatiquement. Ceci est le programme inférieur utilisé par modprobe pour charger des modules.

Les 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 fichier nvidia-current, il s'agit par exemple de nvidia).

modinfo accepte un nom de fichier, ou le nom de fichier sans le suffixe .ko dans /lib/modules/$(uname -r).

38
Lekensteyn

modprobe est une commande intelligente, elle recherche 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 comme Unresolved symbols. Dans ce cas, nous devons rechercher manuellement les modules dépendants et les charger afin de résoudre les erreurs.

3
Shalini Guleria

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 pas définis dans le noyau. Si de telles références sont trouvées, modprobe recherche dans le chemin de recherche actuel des modules 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.

0
user487054