デバイスで認識されるファームウェアバイナリ

デバイスで認識されるファームウェアバイナリ

これは、バイナリがそのデバイスに固有のように、デバイス上のファームウェアバイナリを認識する方法です。ここでカーネルの役割は何ですか?

ベストアンサー1

ハードウェアデバイスはファームウェアファイルの名前を指定しません。デバイスドライバがこれを指定します。

一般に、カーネルは、標準化された識別子(例えば、PCI / PCIeまたはUSBバスのベンダー/製品IDまたはDMI情報)に基づいてハードウェアを検出することができます。ベースの一部のアーキテクチャ(ARMのデバイスツリー情報など)、または管理者またはシステム起動スクリプトにカーネルに特定のドライバをロードするように明示的に指示することができます(完全自動ではなく、以前のISAアーキテクチャに基づくいくつかの古いx86デバイスではまだ動作します)。

その後、ドライバはハードウェアベンダーが文書化またはリバースエンジニアリングした方法を使用してデバイスの存在を確認し、デバイスの状態を確認しようとします。デバイスにファームウェアが必要な場合、ドライバには適切なファームウェアファイルをロードするために必要なカーネル呼び出しが含まれます。ファームウェアデータがメモリにロードされると、ドライバはその特定のハードウェアに適した方法を使用してそれをハードウェアデバイスに送信します。

ハードウェアデバイス自体は、ファームウェアデータが正しいことを確認するか、そうでない可能性があります。最も簡単なハードウェア設計は、ドライバが提供するファームウェアが正しいと信じることができます。 。 。他の極端なケースでは、ファームウェアは、デバイスハードウェアに組み込まれているファームウェアを検証/暗号化解除するために使用される適切なキーと機能を使用して暗号化署名または暗号化することもできます。

ハードウェア自体にファームウェア検証/暗号解読ロジックを追加すると、ハードウェアデバイスの価格と複雑さが増加するため、製造業者は通常、非標準ファームウェアを使用するとデバイス自体が動作しないよりも深刻な問題を引き起こす可能性がある場合にのみこれを実行します。 。したがって、誤ったファームウェアがデバイスを禁止された周波数で送信し、潜在的に航空交通管制レーダー(民間または軍隊)に干渉を引き起こす可能性があります。これは非常に深刻な結果につながる可能性があるため、ハードウェアの製造元には、適切な規制に準拠するために認定されたファームウェアバージョンのみを使用させるインセンティブがあります。

おすすめ記事