Mam moduł innej firmy, który współpracuje z modułem przechwytującym ramki. Pobrałem źródło jądra, postępowałem zgodnie z instrukcjami dostawcy, aby go skompilować, i otrzymałem wynikowy moduł arvdrv.ko, siedzący w folderze.
Sprzedawca dostarczył skrypt ładujący moduł do jądra i działa, gdy go uruchomię; moduł jest ładowany, ale tylko do następnego uruchomienia. Skrypt nie używa modprobe. Mogę uzyskać dostęp do frame grabbera, gdy moduł jest zainstalowany.
Wydaje mi się, że modprobe utrzymuje listę wielu modułów. Można edytować / etc / moduły, aby dodać nazwę modułu i ładuje się on przy starcie systemu, ale arvdrv modułu nie znajduje się na liście modprobe.
Moje pytanie brzmi: jak powiadomić modprobe o module? Czy trzeba go skopiować do nowej lokalizacji, a jeśli tak, to gdzie?
Odpowiedzi:
Używanie
sudo
:Edytuj
/etc/modules
plik i dodaj nazwę modułu (bez.ko
rozszerzenia) we własnej linii. Podczas uruchamiania jądro spróbuje załadować wszystkie moduły wymienione w tym pliku.Skopiuj moduł do odpowiedniego folderu w
/lib/modules/`uname -r`/kernel/drivers
. W moim przypadku tak było/lib/modules/`uname -r`/kernel/drivers/pci
. Spowoduje to umieszczenie modułu w bazie danych modprobe. Nie wiem czy to może być link.Uruchom
depmod
. Znajdzie to wszystkie zależności twojego modułu.W tym momencie uruchomiłem ponownie, a następnie uruchomiłem,
lsmod | grep module-name
aby potwierdzić, że moduł został załadowany podczas rozruchu.Aby uzyskać więcej informacji, zobacz strony podręcznika modprobe , lsmod i depmod .
źródło