Les grains varient d'un fabricant à l'autre. Beaucoup de ces noyaux proviennent de la gamme de sources de noyau de stock pur trouvée sur CAF, ce que ces fabricants font est de prendre ces sources de stock, de les modifier en fonction de la carte / du chipset utilisé, également, d'implémenter leurs propres pilotes.
Regardez bien autour de vous, il y a des variations d'écrans tactiles, des variations de chipsets wifi, sans parler de l'accéléromètre, des capteurs, des batteries, de la boussole, du son, des graphismes.
Prendre une source de noyau par exemple HTC ne fonctionnera pas sur un Samsung, et vice versa.
Les fabricants sont libres de choisir parmi différents bits ou d'extraire des bits qui sont incorporés dans la carte de circuit imprimé. Il n'y a pas de règles strictes ou rapides impliquées. D'où beaucoup de piratages / modifications pour faire fonctionner correctement le noyau.
Vous ne devez jamais comparer avec les noyaux de distribution Linux de bureau dans lesquels il a PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet car ils sont un jeu de balle complètement différent. Les principales différences avec CentOS et avec le noyau Linux d'Android sont les suivantes: TOUS les pilotes sont compilés sous forme de modules ou intégrés, par conséquent, toute distribution Linux "fonctionnera tout simplement". Encore une fois, avec les distributions Linux de bureau - vous avez une architecture - x86, donc un noyau Linux provenant, par exemple, d'un PC Dell, peut fonctionner immédiatement sur un Lenovo à condition que les pilotes standard soient compilés.
N'oubliez pas que dans le monde Android, il existe des variantes du noyau conçu pour des chipsets ARM spécifiques, tels que ARMv6, ARMv7, il y a TEGRA, il y a EXYNOS et ils sont binaires incompatibles entre eux. Par conséquent, si un noyau est compilé pour TEGRA, oubliez-le, il ne fonctionnera pas sur ARMv7!
La raison pour laquelle certains noyaux sur Android semblent être "cassés" est due au fabricant. Certains (Zte est un très bon exemple) publient une source bouchée qui peut se compiler à partir de la source mais ne démarre pas en raison d'un pilote manquant qui n'est pas couvert par la licence GPLv2 ou GPLv3. C'est le problème, donc certains hackers doivent parcourir le github à la recherche d'indices; certains fabricants, sinon tous, s'y conforment. L'incarnation actuelle de la source de Zte est censée être 2.6.35.7, mais en réalité sa base de source 2.6.22.9 avec beaucoup de modifications ne représente donc pas la véritable source du noyau pour 2.6.35.7!
C'est là que les fabricants doivent publier leurs sources respectives, non seulement pour être conformes à la GPLv2 ou ultérieure, mais plutôt pour que la communauté puisse le modifier, comme l'ajout de capacités d'overclocking.
Par conséquent, il y a du piratage impliqué dans les coulisses et beaucoup de problèmes avec les pilotes qui essaient de le faire fonctionner, et ce n'est pas facile à déboguer non plus. Certains pilotes peuvent avoir des licences croisées, MAIS ne peuvent pas être distribués selon la clause et les conditions comme négocié.
Heureusement, tout a changé avec la ligne de sources du noyau 3.xx, car les pilotes Android sont désormais intégrés aux sources traditionnelles. Mais il y a un piège!
Essayez de porter un noyau 3.xx sur un combiné existant âgé d'environ 12 à 18 mois; Pas une chance de boule de neige en enfer cela fonctionnerait, c'est à cause des facteurs différents, les sources 3.xx sont très différentes de la source 2.6.x et prendraient beaucoup de piratage pour le faire fonctionner - je devrais savoir, j'ai essayé portage de la source 2.6.38.6 pour la lame Zte et échoué.
De même, la dernière version du noyau 3.0.1 - lorsque vous travaillez sur le projet ics4blade sur Modaco, a fait de nombreuses tentatives pour le porter, mais cela tient au simple fait que Zte a fait un très mauvais gâchis de la source, ce qui a rendu le portage presque impossible. .