web-dev-qa-db-ja.com

システムに不足しているドライバーを知る方法は?

ラップトップにLinuxをインストールすると、通常はすべてのドライバーがすぐにインストールされますが、最近、表示されるメッセージのpacman -Syu部分は次の行でした。

...
  -> Running build hook: [block]
==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
  -> Running build hook: [keyboard]
...

これは私に考えさせられました、ユーザーとして私のシステムのどの部分がドライバーを欠いているのかをどうやって見つけることができますか? lspci -vなどを使用して使用中のドライバーを一覧表示できることはわかっていますが、ファームウェア/ドライバーがインストールされていない上記の2つのコンポーネントについて具体的に質問しているので、その情報を使用できます。問題を解決する方法を探しに行きます。

3
sprocket12

モジュールにファームウェアがない可能性があるという警告。システムにモジュールはあるが、一部のファームウェアがインストールされていないことを意味します。これは、特定のバイナリBLOBまたはその他の配布の問題の場合です。

ここにaic94xxのドライバーファームウェアがあることに注意してください https://aur.archlinux.org/packages/aic94xx-firmware/ にはオープンソースライセンスがありません。そのための警告は、ファームウェアが存在しないモジュールがインストールされているため、それと互換性のあるハードウェアを検出する適切な方法がないことを示しています。これらの警告が表示された場合、モジュールはインストールされていますが、現在のシステムにはそれらを使用するデバイスがある場合とない場合があります。

ドライバーは実際にはモジュールの一部であるため、デバイススキームごとに使用中のドライバーの種類を確認するのは少し複雑です。実際、モジュールは相互に依存することもでき、カーネル自体にいくつかの「ドライバー」が存在します。

技術的には、バスデバイスはカーネルに新しいデバイスを通知し、それらのデバイスには、そのデバイスをサポートするモジュールがロードされます。デバイスドライバーは、バスとデバイスのメジャー番号とマイナー番号を使用してDEVfsにデバイスノードを作成しますが、このシステムには大きな制限があります。実際には、モジュールをイベントおよびルールとして自動ロードすることも必要です。 Udevは、モジュールのエイリアスをバス/デバイス名に使用し、必要に応じてモジュールをロードして、デバイスファイルを作成します。

udevadm info -a /dev/<device file>を使用すると、すでにロードされている各デバイスの情報が得られます。 SUBSYSTEMS =使用中のLinuxのコア部分であり、DRIVERS =使用中のドライバーです。これらのフィールド内のすべての名前は、「/ lib/modules/uname -r /modules.alias」のudevによってエイリアスで使用されます。

ご覧のとおり、ロードされていないデバイスはそれほど明確ではありません。たとえば、数百のデバイス(エイリアスの形式)をサポートするモジュールをロードできたが、1つのデバイスに対してのみロードされたためです。

1
jdwolf