Як перелічити всі завантажувані модулі ядра?


65

Я шукаю кілька модулів ядра для завантаження i2c-devі i2c-bcm2708. Але modprobeкоманда повертає:

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

Як я можу перерахувати всі наявні модулі в системі? У якому каталозі вони розташовані?


1
Ядро не компілювало цей i2c-dev. Ви не знайшли цей модуль. Розташовані модулі ядра / lib / module / 'kernel-version' / драйвери. Коли ви шукаєте драйвери Linux.
— сюрприз

Ви можете перевірити / boot / config-'kernel-version 'та прочитати цей конфігураційний файл. Ви повинні знати, які модулі Linux завантажуються чи модулятори, або під час компіляції ядра не вмикайте модуль i2c-dev.
— сюрприз

Відповіді:


76
  • За замовчуванням modprobeзавантажує модулі з підкаталогів, що знаходяться в /lib/modules/$(uname -r)каталозі. Зазвичай усі файли мають розширення .ko, тому ви можете перелічити їх

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

    або, враховуючи стислі файли:

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • Однак для завантаження модуля успішно modprobeпотрібні його залежності, перелічені у файлі /lib/modules/$(uname -r)/modules.dep(та відповідної бінарній версії modules.dep.bin). Якщо якийсь модуль присутній у системі, але його немає у списку, то слід запустити команду, depmodяка генерує такі залежності і автоматично включить ваш модуль до modules.depта modules.dep.bin.

  • Крім того, якщо модуль буде успішно завантажений, він буде вказаний у файлі /proc/modules(також доступний через команду lsmod).


3
Файли Redhat 7 модулів стискаються у .xz (не впевнений, що це через версію ядра чи версію ОС .. якщо хтось може мені це уточнити?), Тож я думаю, ви можете їх не знайти за допомогою команди пошуку jimmij. Використовуйте натомість find /lib/modules/$(uname -r) -type f -name *.ko*
— Pozinux

1
@Pozinux виявив те саме, що і в Arch linux о 13.13.10, що має закінчення.gz
— Йоганн

1
@posinux: будьте обережні: оболонка може розширити ваш файл, *.ko*якщо у вашому поточному редакторі є якийсь файл, що відповідає йому. краще уникнути цього між одними цитатами: find /lib/modules/$(uname -r) -type f -name '*.ko*'
— Олів'є Дулак

10

Введіть modprobeта натисніть вкладку, список автозаповнення повинен містити всі завантажувані модулі


11
вона не працює для деяких систем
— avtomaton

5

Існує lsmodкоманда kmodпакета в Arch Linux , що перераховано і показує статус модулів ядра Linux , який містить інші корисні команди , такі як modinfo, rmmod modprobeтеж.

Для л ист все виконавчі файли , що надаються пакетом ви можете ввести:

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

, І ви також можете перевірити на O wner пакет довічного з pacman -Qo lsmod.


Qперемикач в д uery локально встановлені пакети ( в відміну від Sв и Синхронізувати, тобто. , щоб перевірити віддалено).


2
Там , де це важливо підкреслити , що lsmodтільки показує вже завантажені модулі. У автора цього потоку виникла проблема з завантаженням модуля, який не знаходився на карті завантажуваних модулів ядра. Крім того, це рішення стосується лише архіванукса. Що може бути не розповсюдженням автора та не може вирішити проблему для інших.
— Акендо

@Akendo lsmodтакож доступний принаймні на Ubuntu. Однак я згоден, це не вирішує проблему ОП.
— Мелебій

2

Я вважаю за краще використовувати depmod. За допомогою команди: depmod -av|grep MOD_NAMEваша система буде генерувати файли module.dep / map та проглядати його. -vПараметр важливий для багатослів'я і -aзабезпечити , щоб всі можливі модулі з /lib/modules/використовуються для файлу modules.dep.

Таким чином можна переконатися, що запитуваний модуль ядра відображається в ядро ​​як завантажуване. Коли модуль ядра бажання не вказаний у висновку, ви знаєте, що ядро ​​його не знайде.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.