Risposte:
modprobe
legge i moduli da /lib/modules/$(uname -r)/modules.dep.bin
(o senza il .bin
suffisso se l'altro file non è disponibile). Dallo stesso file vengono caricate le dipendenze.
modprobe
accetta il nome di un .ko
file in /lib/modules/$(uname -r)
(ad es. nvidia-current
per il file dkms/nvidia-current.ko
) e alias ( modules.alias.bin
). Anche i builtin ( modules.alias.bin
) sono riconosciuti, ma poiché questi moduli sono caricati di default, non ha senso modprobare questo tipo di moduli.
insmod
d'altra parte accetta percorsi per i file. Il modulo non deve risiedere /lib/modules/$(uname -r)
, ma le dipendenze non vengono caricate automaticamente. Questo è il programma inferiore utilizzato da modprobe
per caricare i moduli.
Altri programmi relativi ai moduli sono rmmod
e modinfo
.
rmmod
rimuove un nome del kernel basato sul nome da /proc/modules
. Questo nome non deve necessariamente essere uguale a quello passato a modprobe
(per il nvidia-current
file, nvidia
ad esempio).
modinfo
accetta un nome file o il nome file senza .ko
suffisso in /lib/modules/$(uname -r)
.
modprobe
è un comando intelligente, cerca dipendenze durante il caricamento di un modulo. Supponiamo, se ho caricato un modulo, che ha dei simboli definiti in qualche altro modulo (questo percorso del modulo è indicato all'interno del modulo principale). Quindi, modprobe
carica il modulo principale e il modulo dipendente.
Ma se insmod
usato, non caricherà la dipendenza, e quindi darà errori di compilazione come Unresolved symbols
. In questo caso, dobbiamo cercare manualmente il modulo dipendente e dobbiamo caricarli per risolvere gli errori.
L'utilità modprobe merita una breve menzione. modprobe, come insmod, carica un modulo nel kernel. Si differenzia per il fatto che esaminerà il modulo da caricare per vedere se fa riferimento a simboli che non sono attualmente definiti nel kernel. Se vengono trovati tali riferimenti, modprobe cerca altri moduli nel percorso di ricerca del modulo corrente che definiscono i simboli pertinenti. Quando modprobe trova quei moduli (che sono necessari al modulo che viene caricato), li carica anche nel kernel. Se invece si utilizza insmod in questa situazione, il comando ha esito negativo con un messaggio "simboli non risolti" lasciato nel file di registro di sistema