Jak wyświetlić wszystkie ładowane moduły jądra?


65

Szukam kilku modułów jądra do załadowania i2c-devi i2c-bcm2708. Ale modprobepolecenie zwraca:

sudo modprobe i2c-dev
modprobe: module i2c-dev not found in modules.dep

Jak mogę wyświetlić listę wszystkich dostępnych modułów w systemie? W którym katalogu się znajdują?


1
Jądro nie skompilowało tego i2c-dev. Nie znaleziono tego modułu. Moduły jądra znajdują się / lib / modules / 'kernel-version' / drivers. Gdy szukasz sterowników dla systemu Linux.
supriady

Możesz sprawdzić / boot / config-'kernel-version' i przeczytać ten plik konfiguracyjny. Powinieneś wiedzieć, które moduły linuksowe są załadowane lub modułowe lub podczas kompilacji jądra nie włączył modułu i2c-dev.
supriady

Odpowiedzi:


76
  • Domyślnie modprobeładuje moduły z podkatalogów znajdujących się w /lib/modules/$(uname -r)katalogu. Zwykle wszystkie pliki mają rozszerzenie .ko, więc możesz je wymienić

    find /lib/modules/$(uname -r) -type f -name '*.ko'
    

    lub, biorąc pod uwagę skompresowane pliki:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Jednak do pomyślnego załadowania modułu modprobepotrzebne są jego zależności wymienione w pliku /lib/modules/$(uname -r)/modules.dep(i odpowiedniej wersji binarnej modules.dep.bin). Jeśli jakiś moduł jest obecny w systemie, ale nie ma go na liście, powinieneś uruchomić polecenie, depmodktóre wygeneruje takie zależności i automatycznie uwzględni moduł w modules.depi modules.dep.bin.

  • Dodatkowo, jeśli moduł zostanie pomyślnie załadowany, zostanie wymieniony w pliku /proc/modules(dostępny również za pomocą polecenia lsmod).


3
Pliki Redhat 7 modułów są skompresowane w .xz (nie jestem pewien, czy to z powodu wersji jądra czy wersji systemu operacyjnego ... czy ktoś może mi to wyjaśnić?), Więc myślę, że możesz ich nie znaleźć za pomocą polecenia find jimmij. Zamiast tego użyj find /lib/modules/$(uname -r) -type f -name *.ko*
Pozinux

1
@Pozinux Odkrył to samo na Arch Linux w 4.13.10, które mają zakończenie.gz
Johann

1
@posinux: strzeż się: powłoka może się rozwinąć, *.ko*jeśli akurat w twoim katalogu znajduje się jakiś pasujący plik. lepiej uniknąć tego między pojedynczymi cytatami: find /lib/modules/$(uname -r) -type f -name '*.ko*'
Olivier Dulac

10

Wpisz modprobei naciśnij tab, lista autouzupełniania powinna zawierać wszystkie moduły, które można załadować


11
nie działa na niektórych systemach
avtomaton

5

Jest lsmodznajomość kmodpakietu w Arch Linux , co wylicza i pokazuje stan modułów jądra Linux, który zawiera innych przydatnych poleceń, takich jak modinfo, rmmod modprobezbyt.

Do l ist wszystkie pliki binarne przewidziane przez pakiet można wpisać:

pacman -Ql kmod | grep /bin/ --color=always

, Można również sprawdzić, czy o pakiecie WNER binarnego z pacman -Qo lsmod.


QPrzełącznik jest q uery lokalnie zainstalowanych pakietów (w przeciwieństwie Sdo ów ynchronize, tj. sprawdzić zdalnie).


2
Gdzie ważne jest, aby podkreślić, że lsmodtylko pokazuje już załadowane moduły. Autor tego wątku miał problem z załadowaniem modułu, którego nie ma na mapie modułów jądra do załadowania. Poza tym to rozwiązanie dotyczy tylko archlinuxa. Co może nie być dystrybucją autora i może nie rozwiązać problemu dla innych.
Akendo

@Akendo lsmodjest także dostępne przynajmniej na Ubuntu. Zgadzam się jednak, że to nie rozwiązuje problemu OP.
Melebius

2

Wolę używać depmod. Za pomocą polecenia: depmod -av|grep MOD_NAMEsystem wygeneruje pliki module.dep / map i przejdzie przez to grep. Ten -vparametr jest ważny dla gadatliwości i -adla zapewnienia, że ​​wszystkie możliwe moduły z /lib/modules/są używane w pliku modułów.dep.

W ten sposób można upewnić się, że żądany moduł jądra jest mapowany na jądro jako możliwy do załadowania. Gdy pożądanego modułu jądra nie ma na liście, wiadomo, że jądro go nie znajdzie.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.