Linuxカーネルツリーには、リバースエンジニアリングされたドライバがたくさんあります。ただし、一部のドライバ(特にワイヤレスドライバ)が正しく動作するには、ファームウェアバイナリBLOBが必要です。
誰かがこれをリバースエンジニアリングし、ドライバを100%無料にするのを防ぐのは何ですか?それとも、ドライバーごとに異なるルールがありますか?
答え1
ファームウェアは、メインCPUではなく、デバイス自体のプロセッサで実行されるソフトウェアです。いくつかの理由で、ファームウェアはドライバよりもプライベートソースである可能性が高いです。
ファームウェアは一度だけ作成するだけで、オペレーティングシステムごとに異なるドライバが必要です。したがって、ハードウェアメーカーには、サードパーティが優先するオペレーティングシステム用の独自のドライバを作成できるようにするインセンティブがありますが、ファームウェアにはそのようなインセンティブはありません。
ファームウェアはハードウェアに近いため、ハードウェア企業はハードウェアの動作方法を秘密に保つことを望むことがよくあります。だから彼らはまた、ファームウェアがどのように作成されるかを公開するのが好きではありません。
ファームウェアはドライバコードよりもリバースエンジニアリングするのが難しいです。メインCPUで実行されているドライバとは異なり、周辺機器は通常簡単にデバッグできません。また、ファームウェアは正しく文書化されていない環境で実行されます(CPUタイプがほとんどなく、どのI / Oデバイスがどのアドレスにマップされるかは非常に多様です)。
Wi-Fiドライバに追加の問題があります。ほとんどの地域の法律は特定の無線周波数の使用を禁止しており、これらの禁止された周波数で消費者機器が放送されないように保護する必要があります。ハードウェアは非常に柔軟であり、唯一の保護手段はファームウェアであることがよくあります。禁止された周波数で放送するためにファームウェアを変更するのが簡単すぎると、製造業者はこれらの規則に違反する可能性があります。