カーネルに関する私の知識は多少制限されているので、この質問が間違った出発点から来た場合はご了承ください。
私のラップトップなどのx86ベースのコンピュータでは、任意のLinuxディストリビューションをインストールできます。 WLANカードまたはグラフィックカードにはいくつかのマイナーな問題がある可能性がありますが、通常はすべてのバージョンのLinuxカーネルをインストールできます。
ARMプロセッサを搭載したAndroid携帯電話やRaspberry Piなどのシステムは実際にこれを行うことができず、特別なコアを装備する必要があります。そして、チップメーカーは、特定のバージョンのLinuxカーネルでコンパイルされたバージョンのドライバのみを提供しているようです。 Android携帯はほとんどアップデートを受けておらず、ソフトウェアは自動車エンターテイメントシステムと同じくらいハードウェアに接続されているようです。
製造業者は、カーネルの様々なバージョンのドライバを維持することはあまりにも多くの作業であり、新しいバージョンに移植するのも難しいと言います。しかし、なぜAndroidユーザーが適切な努力をしてもアップデートを受け取ることができないほど、特定のバージョンに密接に縛られているのですか? x86で実行されますか?
ドライバがカーネルに緊密に統合されているかどうか疑問に思います。独立したモジュールに分離するのが役立ちます。その後、デバイスメーカーはまだコンパイルされたコードをリリースできますが(競合他社がそのデバイスのデザインを推測できないように)、他のLinuxバージョンで使用できます。 AndroidおよびデスクトップLinuxディストリビューションは最新のカーネルを使用して最新バージョンをリリースするため、そのカーネルバージョン用のドライバがないとシステム全体をアップグレードすることはできません。
Androidデバイスがまだ以前のバージョンにとどまっている根本的な理由は何ですか?
ベストアンサー1
著作権、特許、その他の知的財産権の問題が実際に根本的な原因です。ハードウェアメーカーは詳細全体を公開していませんが、バイナリブロブを提供しています。残念ながら、カーネルの内部動作は完全に安定していないため、リリースするたびにバイナリブロブを更新する必要があります。アップデートを提供しても、製造元に追加の収益は発生しません。以前のVMWareカーネルモジュール(少なくとも開いていてパッチ適用可能)とNVidiaがグラフィックカード用に提供したドライバにも同じ問題があります。
Linusは、安定した内部インターフェースには興味がないと述べた。ハードウェアメーカーが自分の製品が常に動作するようにしたい場合は、コードを開き、それをデフォルトのカーネルツリーに統合する必要があります。 。