Как определить модуль, который, как предполагают, требовал устройства поставщиком/идентификатором продукта только?

Предположим, что я знаю числовые идентификаторы продукта/поставщика аппаратных средств, которые я не имею здесь, и я хочу знать, существует ли поддержка меня в ядре, я могу сделать это (пример получателя Bluetooth USB):

modinfo btusb
filename:       /lib/modules/3.7.5-030705-generic/kernel/drivers/bluetooth/btusb.ko
[...]
alias:          usb:v0A5Cp*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v0489p*d*dc*dsc*dp*icFFisc01ip01in*
alias:          usb:v413Cp8197d*dc*dsc*dp*ic*isc*ip*in*
[...]

От этого я вижу, которым должны требоваться устройства btusb и это требует, чтобы я знал имя модуля на заранее. В некоторых случаях однако у меня нет подсказки об имени (именах) модуля (модулей), поддерживающем такое устройство.

Сети аппаратных средств являются одной из тех категорий, которая кажется очень твердой узнать о. Кроме того, lspci и lsusb имена являются иногда неокончательными или просто неправильными. Я в настоящее время держу через целое исходное дерево ядра, которое не настолько изящно.

  • Существует ли способ перечислить весь modaliases всех модулей (включая встроенный к ядру) сразу, таким образом, я могу найти соответствие?
  • Или, альтернативно, есть ли способ запросить ядро, чтобы предоставить мне модули ядра, требуя такого устройства, которым я на самом деле не владею?

Варианты использования:

  • Пользователи, задающие вопросы здесь, которыми я могу ответить/обмануть путем фактической проверки, что "поддержка находится в том, если Вы обновляете до..." или ", Пробуют rmmod module1; modprobe module2 как module2, кажется, поддерживает Ваше устройство также".
  • Проверка поддержки прежде, чем купить аппаратные средства с предварительными знаниями идентификаторов. Дополнительный к поиску с идентификаторами, я могу затем искать отчеты об ошибках на самом модуле ядра.
14
задан 6 February 2013 в 22:20

1 ответ

Если вы переформулируете проблему как «Как я могу запустить modinfo на всех (или некоторых) модулях и выбрать некоторые выходные данные для дальнейшего использования?», Вы можете использовать этот трюк (я оставил команды, которые использовал чтобы понять, как добраться до конечного результата):

ls /lib/modules
ls /lib/modules/$(uname -r)
ls /lib/modules/$(uname -r)/kernel
find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print
for i in $( !! ) ; do
for i in $( find  /lib/modules/$(uname -r)/kernel -type f -name '*.ko' -print ) ; do
   j=${i##.*/}
   j=${j%%.ko}
   echo $j
   modinfo $i | egrep 'filename:|alias:'
   echo ""
   done

Этот трюк можно использовать в другом месте, получайте удовольствие!

0
ответ дан 6 February 2013 в 22:20

Другие вопросы по тегам:

Похожие вопросы: