ベンダー/製品IDのみでデバイスを要求することになっているモジュールを識別する方法は?


14

ここにないハードウェアの製品/ベンダーIDの数値を知っていて、カーネルでサポートされているかどうかを知りたい場合、これを行うことができます(USB bluetoothレシーバーの例):

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、事前にモジュール名を知る必要があります。ただし、場合によっては、そのようなデバイスをサポートするモジュール名についての手がかりがありません。

ネットワークハードウェアは、これらのカテゴリの1つであり、見つけるのが非常に難しいようです。また、lspciとはlsusb名前が決定的でないか、単に間違っている場合があります。現在、カーネルソースツリー全体を把握していますが、それほどエレガントではありません。

  • すべてのモジュールのすべてのモダリア(カーネルへの組み込みを含む)を一度に一覧表示て一致を見つける方法はありますか?
  • または、代わりに、実際に所有していないデバイスを要求するカーネルモジュールを提供するためにカーネルを照会する方法はありますか?

ユースケース:

  • ここで質問するユーザーは、「...にアップグレードした場合にサポートが有効」または「rmmod module1を試してください。modprobemodule2 as module2もデバイスをサポートしているようです。」
  • IDの事前知識があるハードウェアを購入する前にサポートを確認します。IDでの検索に加えて、カーネルモジュール自体のバグレポートを検索できます。

この情報を取得する簡単な方法はありません。すべてのUSBデバイスがIDに基づいて要求されるわけではありません。クラスベースのデバイス(ストレージ、HID、および多くのシリアルデバイスとネットワークデバイス)は、それらが提供するインターフェイスに基づいて識別されます。
アリステアバクストン

多分usb-modeswitchがそれを助けてくれます。持っていない場合:sudo apt-get install usb-modeswitch
ディミトリ

lsusbが入力すると、あなたはIDが表示されます
ディミトリスTheodoridis

あなたの質問から、私はあなたがIDを見てそれを変更したいことを見ました、私は間違っていますか?
ディミトリ

今私は本当にあなたを理解していません。私がそれをよりよく理解できるよりもあなたの質問を説明してください、そして、私が実際にあなたを助けることができるかどうか確かめてください
ディミトリスTheodoridis

回答:


3

問題を「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

このトリックは他の場所でも使用でき、楽しんでください!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.