Предположим, что я знаю числовые идентификаторы продукта/поставщика аппаратных средств, которые я не имею здесь, и я хочу знать, существует ли поддержка меня в ядре, я могу сделать это (пример получателя 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
имена являются иногда неокончательными или просто неправильными. Я в настоящее время держу через целое исходное дерево ядра, которое не настолько изящно.
Варианты использования:
Если вы переформулируете проблему как «Как я могу запустить 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
Этот трюк можно использовать в другом месте, получайте удовольствие!