Kernel variieren von Hersteller zu Hersteller. Viele dieser Kernel stammen aus der reinen Stock-Kernel-Reihe von CAF-Quellen. Diese Hersteller nehmen diese Quellen und passen sie an die verwendeten Boards / Chipsätze an. Außerdem implementieren sie ihre eigenen Treiber.
Schauen Sie sich um, es gibt verschiedene Touchscreens, verschiedene WLAN-Chipsätze, Beschleunigungsmesser, Sensoren, Batterien, Kompass, Sound und Grafiken.
Wenn Sie beispielsweise eine Kernelquelle von HTC nehmen, funktioniert dies auf einem Samsung nicht und umgekehrt.
Den Herstellern steht es frei, verschiedene Bits, die in die Leiterplatte eingebaut werden, auszuwählen oder auszulagern. Es gibt keine festen Regeln. Daher die Menge an Hacking / Modifikationen, um den Kernel zum Laufen zu bringen.
Sie dürfen sich nicht mit Linux-Distributionskernen vergleichen, in denen PCI, PCI-Express, SATA, VGA, SVGA, USB und Ethernet zum Einsatz kommen, da dies ein völlig anderes Ball-Park-Spiel ist. Der Hauptunterschied zu CentOS und zum Android-Linux-Kernel besteht darin, dass ALLE Treiber entweder als Module oder als integrierte Treiber kompiliert werden. Daher funktioniert jede Linux-Distribution einfach "out of the box". Bei Desktop-Linux-Distributionen - Sie haben eine Architektur - kann x86, also ein Linux-Kernel von beispielsweise einem Dell-PC, auf einem Lenovo sofort ausgeführt werden, sofern die Standardtreiber kompiliert sind.
Vergessen Sie nicht, dass es in der Android-Welt Varianten des Kernels gibt, die für bestimmte ARM-Chipsätze entwickelt wurden, wie z. B. ARMv6, ARMv7, TEGRA, EXYNOS und binäre Inkompatibilitäten. Wenn also ein Kernel für TEGRA kompiliert ist, vergessen Sie es, er wird auf ARMv7 nicht funktionieren!
Der Grund, warum einige Kernel auf Android "kaputt" zu sein scheinen, liegt beim Hersteller. Einige (Zte ist ein sehr gutes Beispiel) veröffentlichen eine geschlachtete Quelle, die möglicherweise aus der Quelle kompiliert wird, jedoch aufgrund eines fehlenden Treibers, der nicht durch die GPLv2- oder GPLv3-Lizenz abgedeckt ist, nicht gestartet werden kann. Das ist das Problem, daher müssen einige Hacker in Github nach Hinweisen suchen. Einige Hersteller, wenn nicht alle, halten sich daran. Die aktuelle Inkarnation von Ztes Quelle ist angeblich 2.6.35.7, aber in Wirklichkeit repräsentiert die eigentliche 2.6.32.9-Quellenbasis mit vielen Modifikationen nicht die wahre Kernelquelle für 2.6.35.7!
Hier müssen die Hersteller ihre jeweiligen Quellen freigeben, nicht nur aus Gründen der Kompatibilität mit GPLv2 oder höher, sondern auch, damit die Community sie modifizieren kann, z. B. um Übertaktungsfunktionen hinzuzufügen.
Hinter den Kulissen wird also gehackt, und es wird viel mit den Treibern herumgespielt, die versuchen, es zum Laufen zu bringen. Auch das Debuggen ist nicht einfach. Einige Treiber sind möglicherweise gegenlizenziert, ABER können je nach Klausel und Bedingungen nicht weitergegeben werden ausgehandelt.
Zum Glück hat sich dies mit der Kernel 3.xx-Quellenserie geändert, da die Android-Treiber nun in die Mainstream-Quellen integriert sind. Aber es gibt ein GOTCHA!
Versuchen Sie, einen 3.xx-Kernel auf ein vorhandenes Mobilteil zu portieren, das etwa 12 bis 18 Monate alt ist. Keine Chance für einen Schneeball in der Hölle, würde es funktionieren, das liegt daran, dass sich die 3.xx-Quellen aufgrund der unterschiedlichen Faktoren stark von der 2.6.x-Quelle unterscheiden und viel Hacking erfordern würden, um sie zum Laufen zu bringen - ich hätte es wissen müssen Portierung 2.6.38.6 Quelle für das Zte Blade und fehlgeschlagen.
Ebenso hat das neueste Kernel-Release 3.0.1 - bei der Arbeit am ics4blade-Projekt über Modaco - zahlreiche Versuche unternommen, es zu portieren, aber das liegt einfach an der Tatsache, dass Zte die Quelle sehr durcheinander gebracht hat, was die Portierung nahezu unmöglich machte .