web-dev-qa-db-ja.com

カスタムカーネル:モジュールが組み込まれているとファームウェアのロードに失敗します

すべてのモジュールを組み込みたいのですが、これはiwlagnで失敗します。

iwlagn 0000:03:00.0: request for firmware file 'iwlwifi-6000-4.ucode' failed.
iwlagn 0000:03:00.0: no suitable firmware found!

マイクロコードファイルは/lib/firmwareに存在し、iwlagnをモジュールとしてコンパイルすればすべてが正常に機能します。ファイルをどこで探しているのか、何が問題なのかわかりません-何かアイデアはありますか?

9
justdontdoit

CONFIG_FIRMWARE_IN_KERNELCONFIG_EXTRA_FIRMWARE、およびCONFIG_EXTRA_FIRMWARE_DIR構成オプション(デバイスドライバー->汎用ドライバーオプションにあります)を確認してください。

最初のオプションはファームウェアをカーネルに組み込むことを可能にし、2番目のオプションはファームウェアのファイル名(またはスペースで区切られた名前のリスト)を含み、3番目のオプションはファームウェアを探す場所を含む必要があります。

したがって、あなたの例では、これらのオプションを次のように設定します。

CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE='iwlwifi-6000-4.ucode'
CONFIG_EXTRA_FIRMWARE_DIR='/lib/firmware'

アドバイス:すべてのモジュールをカーネルにコンパイルすることはお勧めできません。ある時点で私も必死になっていたので、あなたの野心は理解できたと思います。このようなアプローチの問題は、モジュールが組み込まれるとモジュールをアンロードできないことです。残念ながら、特にワイヤレスドライバーはバグが多く、モジュールを再ロードする必要があります。また、最近のドライバーのモジュールバージョンが機能しない場合もあります。

10
rozcietrzewiacz