カーネルはメーカーによって異なります。これらのカーネルの多くは、CAFにあるソースの純粋なストックカーネルラインに由来しています。これらのメーカーは、ストックソースを取得し、使用するボード/チップセットに基づいてそれらを変更し、独自のドライバーを実装しています。
あなたの周りをよく見てください、タッチスクリーンのバリエーション、wifiチップセットのバリエーション、もちろん、加速度計、センサー、バッテリー、コンパス、サウンド、グラフィックスがあります。
たとえば、HTCから1つのカーネルソースを取得しても、Samsungでは機能しません。逆の場合も同様です。
メーカーは、回路基板に組み込まれるさまざまなビットを自由に選択したり、アウトソースしたりできます。難しいルールや速いルールはありません。したがって、カーネルを適切に動作させるための多くのハッキング/変更。
PCI、PCI-Express、SATA、VGA、SVGA、USB、イーサネットを備えたデスクトップLinuxディストリビューションカーネルと比較してはいけません。まったく異なるボールパークゲームです。CentOSとAndroidのLinuxカーネルとの主な違いはこれです- すべてのドライバーはモジュールまたはビルトインのいずれかとしてコンパイルされるため、Linuxディストリビューションは単に「そのまま」動作します。繰り返しになりますが、デスクトップLinuxディストリビューションでは、アーキテクチャが1つです。x86であるため、Dell PCなどのLinuxカーネルは、ボグ標準ドライバがコンパイルされていれば、Lenovoでそのまま使用できます。
Androidの世界には、ARMv6、ARMv7などの特定のARMチップセット用に構築されたカーネルのバリエーションがあり、TEGRAがあり、EXYNOSがあり、相互にバイナリ互換性がないことを忘れないでください。したがって、カーネルがTEGRA用にコンパイルされている場合は、忘れてください。ARMv7では動作しません。
Androidの一部のカーネルが「破損」しているように見える理由は、製造業者にかかっています。一部(Zteは非常に良い例です)は、ソースからコンパイルできるが、GPLv2またはGPLv3ライセンスでカバーされていないドライバーが見つからないために起動に失敗する、屠殺されたソースをリリースします。それが問題なので、一部のハッカーは手がかりを探すためにgithubを探し回らなければなりません。すべてではないにしても、一部のメーカーは準拠しています。Zteのソースの現在の化身は2.6.35.7であると言われていますが、実際には多くの変更を加えた実際の2.6.32.9ソースベースは、2.6.35.7の真のカーネルソースを表していません!
これは、GPLv2以降に準拠していないだけでなく、オーバークロック機能を追加するなど、コミュニティがそれを変更できるようにするために、メーカーがそれぞれのソースをリリースする必要がある場所です。
したがって、そこにシーンや仕事にそれを取得しようとしているドライバーとぐちゃぐちゃに多くの背後に関与ハッキングだ、とその簡単なデバッグに...一部のドライバは、クロスライセンスを取得することができるではないのいずれか、しかし条項や条件などに応じて配布することができません交渉した。
ありがたいことに、Androidドライバーが主流のソースに統合されるようになったため、カーネル3.xxのソース行ですべてが変更されました。しかし、落とし穴があります!
約12〜18か月前の既存のハンドセットに3.xxカーネルを移植してみてください。雪だるまがうまくいかないのは、3.xxのソースが2.6.xのソースと大きく異なるため、動作させるために多くのハッキングが必要だからです。 Zte Bladeの2.6.38.6ソースを移植して失敗しました。
同様に、最新のカーネルリリース3.0.1-Modacoでics4bladeプロジェクトに取り組んでいるとき、それを移植しようと何度も試みましたが、それはZteが非常に悪いソースの混乱を引き起こし、移植を不可能にしたという事実です。