Debian カーネル - ドライバがカーネルでコンパイルされた場合、ファームウェアファイルが必要なのはなぜですか?

Debian カーネル - ドライバがカーネルでコンパイルされた場合、ファームウェアファイルが必要なのはなぜですか?

使っていますこのUSB Wi-Fiデバイス私のDebianで実行していますDE10-ナノプレート

製品の詳細を見ると、RT2800USBドライバに含まれているRT5370チップセットを使用しているようです。以下のスクリーンショットに示すように、カーネルでこの機能を有効にしました。

ここに画像の説明を入力してください。

ただし、以下を使用してファームウェアをインストールしないと、Wi-Fiデバイスは機能しません。

sudo apt install firmware-ralink

私の質問は - ファームウェアはドライバとどのように関連していますか? Wi-Fiデバイスに必要なファームウェアがすでにインストールされている必要はありませんか?ここで何が起こっているのでしょうか?

私はカーネルドライバとデバイスに初めて触れたので、ここで起こる魔法を理解しようとしています。私が理解したのは、デバイスを使用するには、関連するドライバがカーネルにコンパイルまたは後でロードできるモジュールとして提供されていることを確認するだけです。

これは私が実行したときのdmesg出力ですifup wlan0。ファームウェアファイルはrt2870.binソフトウェアパッケージで提供されていますfirmware-ralink

[   78.302351] ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
[   78.311413] ieee80211 phy0: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36
[   80.175252] wlan0: authenticate with 30:23:03:41:73:67
[   80.206023] wlan0: send auth to 30:23:03:41:73:67 (try 1/3)
[   80.220665] wlan0: authenticated
[   80.232966] wlan0: associate with 30:23:03:41:73:67 (try 1/3)
[   80.257518] wlan0: RX AssocResp from 30:23:03:41:73:67 (capab=0x411 status=0 aid=5)
[   80.270065] wlan0: associated
[   80.503705] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

ベストアンサー1

多くのハードウェアデバイス製造元はデバイスにファームウェアを含まず、ファームウェアをデバイスにロードするにはオペレーティングシステムドライバが必要です。

他のメーカーは以前のバージョンのファームウェアを内蔵していますが、ドライバが最新バージョンをロードできるようにします。組み込みバージョンは古くなったり、バグがあることがよくあります(しばしばデバイス自体で更新されることもあります。製造やテストプロセスを変更する必要があるためです)。ファームウェアのバージョンが必ずしもそうである必要はないという根拠があります。いいね、最小限の機能を備えたものと似ている必要があります。アップデートはドライバによってロードされ、ロードされなければなりません。)

ファームウェアファイルには、ほとんど常にGPLと互換性のないライセンス(明示的または識別可能なライセンスではなく、デバイス自体およびそれに付随するWindowsドライバと一緒に配布され、暗黙的な「許可」のみがあります)があるため、次のように使用することはできません。カーネル自体は一緒に配布されるため、別々のパッケージとして配布する必要があります。

デバイスが正常に動作するには、ドライバとファームウェアが必要です。

おすすめ記事