web-dev-qa-db-ja.com

Linuxカーネルに新しいハードウェアサポートはどのように追加されますか?

新しいグラフィックアダプタをリリースする会社Aがあると想像してください。この新しいグラフィックアダプタが将来Linuxカーネルでサポートされるようになるプロセスを誰が管理しますか?それはどのように進行しますか?新しいハードウェアのカーネルサポートがどのように処理されるのか興味があります。 Windowsでは、企業は独自にドライバーを開発していますが、Linuxはどのようにして特定のハードウェアサポートを取得しますか?

19
NES

ドライバーのサポートは、すべてのオープンソースと同じように機能します。誰かが自分のかゆみを掻くことに決めます。

Windowsの場合と同様に、ドライバーはハードウェアを提供する会社から提供される場合があります。 Intelはネットワークチップに対してこれを行い、3wareはRAIDコントローラーに対してこれを行います。これらの企業は、ドライバーを提供することが最善の利益であると判断しました。彼らの「かゆみ」はLinuxユーザーに製品を販売することであり、それはドライバーがいること。

最良の場合、同社はLinuxディストリビューションに同梱されている適切なソースベースにドライバーを導入するために懸命に取り組んでいます。ほとんどのドライバーにとって、それはLinuxカーネルを意味します。グラフィックドライバの場合、それは X.org を意味します。プリンタドライバの場合は [〜#〜] cups [〜#〜] 、UPSドライバの場合は [〜#〜] nut [〜#〜] もあります [〜#〜] sane [〜#〜] スキャナードライバーなど。これを行うことの明らかな利点は、ドライバーが受け入れられた後に作成されたLinuxディストリビューションが、すぐに使用できるハードウェアをサポートすることです。最大の欠点は、2つの別々のグループが何かを調整するのが難しいのと同じ基本的な理由で、会社がオープンソースプロジェクトと調整してドライバーを引き込むことがより多くの作業になることです。

次に、ドライバーのソースコードを直接提供することを選択した企業のみがあります。通常、ドライバーのソースコードをWebサイトからダウンロードし、システム上にビルドして、手動でインストールする必要があります。このような企業は通常、適切なオープンソースプロジェクトと調整してドライバーをそのプロジェクトのソースベースに取り込むための労力を惜しまないほどの十分な従業員がいない小規模または専門メーカーです。

ソースコードの代わりにバイナリのみのドライバを提供している企業はほとんどありません。例としては、NVIDIAなどの企業のより高度な3Dドライバーがあります。通常、この理由は、会社が独占的であると感じる情報を提供したくないためです。このようなドライバーは、ハードウェアを提供している会社がAPIとABIの変更を追跡するためにドライバーを再構築する必要がないため、以前のケースほど多くのLinuxディストリビューションでは機能しないことがよくあります。エンドユーザーまたはLinuxディストリビューションプロバイダーがソースコードとして提供されたドライバーを微調整してそのような変更を追跡することが可能であるため、前の2つのケースでは、ドライバーは通常、バイナリドライバーよりも多くのシステムで動作するようにできます。

会社がLinuxドライバーを提供していない場合、コミュニティの誰かが単にそれを提供することを決定します。 UPSやプリンタのように、これが一般的なハードウェアの大きなクラスがいくつかあります。 a)ハードウェアを持っているまれなユーザーが必要です。 b)時間があります。 c)スキルを持っている。 d)ドライバーの開発に時間を費やす傾向がある。一般的なハードウェアの場合、これは通常問題にはなりません。何百万ものLinuxユーザーがいるため、これらの少数のユーザーが存在するからです。珍しいハードウェアでトラブルに巻き込まれます。

26
Warren Young

これを詳細に理解するために、最近Raspberry Pi 3が登場し、Bluetoothチップが追加されました。これはBroadcomBLEチップであり、Raspberry Piカーネルはそれをサポートしていないため、Linux用のbluezライブラリは機能しません。理想的には、そのBLEチップのファームウェアパッチが必要であり、ユーザーが利用できるようにするには、カーネルを再度コンパイルする必要があります。そうですか?

0
Joana Rigbi