Jaka jest różnica między insmod a modprobe?

Odpowiedzi:

28

Za man insmod:

Większość użytkowników będzie chciała zamiast tego użyć modprobe, co jest bardziej sprytne i może obsłużyć zależności modułu.

8128
źródło
2
Ach, przepraszam, przegapiłem tę linię.
NES
39

modprobeodczytuje moduły z /lib/modules/$(uname -r)/modules.dep.bin(lub bez .binprzyrostka, jeśli inny plik nie jest dostępny). Z tego samego pliku ładowane są zależności.

modprobeakceptuje nazwę .kopliku w /lib/modules/$(uname -r)(np. nvidia-currentdla pliku dkms/nvidia-current.ko) i aliasy ( modules.alias.bin). Wbudowane ( modules.alias.bin) również są rozpoznawane, ale ponieważ te moduły są ładowane domyślnie, nie ma sensu modprobowanie tego rodzaju modułów.

insmodz drugiej strony akceptuje ścieżki do plików. Moduł nie musi rezydować /lib/modules/$(uname -r), ale zależności nie są ładowane automatycznie. Jest to niższy program używany modprobedo ładowania modułów.

Inne programy związane z modułami to rmmodi modinfo.

rmmodusuwa nazwę jądra na podstawie nazwy z /proc/modules. Ta nazwa niekoniecznie musi być taka sama jak nazwa przekazana modprobe(na przykład dla nvidia-currentpliku nvidia).

modinfoakceptuje nazwę pliku lub nazwę pliku bez .koprzyrostka /lib/modules/$(uname -r).

Lekensteyn
źródło
3

modprobeto inteligentne polecenie, szuka zależności podczas ładowania modułu. Załóżmy, że jeśli załadowałem moduł, który ma symbole zdefiniowane w innym module (ta ścieżka modułu jest podana w module głównym). Tak więc modprobeładuje moduł główny i moduł zależny.

Ale jeśli insmodzostanie użyty, nie załaduje zależności, a zatem spowoduje błędy kompilacji takie jak Unresolved symbols. W takim przypadku musimy ręcznie poszukać modułu zależnego i musimy go załadować, aby usunąć błędy.

Shalini Guleria
źródło
0

Warto wspomnieć o narzędziu modprobe. Modprobe, podobnie jak insmod, ładuje moduł do jądra. Różni się tym, że sprawdzi moduł, który ma zostać załadowany, aby sprawdzić, czy odwołuje się do symboli, które nie są obecnie zdefiniowane w jądrze. Jeśli zostaną znalezione takie odniesienia, modprobe szuka innych modułów w bieżącej ścieżce wyszukiwania modułów, które definiują odpowiednie symbole. Kiedy modprobe znajdzie te moduły (potrzebne do załadowanego modułu), ładuje je również do jądra. Jeśli zamiast tego użyjesz insmod w tej sytuacji, polecenie zakończy się niepowodzeniem z komunikatem „nierozwiązane symbole” w pliku dziennika systemu

użytkownik487054
źródło