Los granos varían de un fabricante a otro. Muchos de esos núcleos provienen de la línea de fuentes de kernel puro que se encuentra en CAF, lo que estos fabricantes hacen es tomar esas fuentes de stock, modificarlas para adaptarlas según la placa / chipset utilizado, también, implementar sus propios controladores.
Mire a su alrededor, hay variaciones de pantallas táctiles, variaciones de chipsets wifi, sin mencionar, acelerómetro, sensores, baterías, brújula, sonido, gráficos.
Tomar una fuente de kernel de, por ejemplo, HTC no funcionará en un Samsung, y viceversa.
Los fabricantes son libres de seleccionar o externalizar varios bits que se incorporan a la placa de circuito. No hay reglas duras o rápidas involucradas. De ahí la gran cantidad de piratería / modificaciones para que el kernel funcione correctamente.
Nunca debe compararse con los núcleos de distribución Linux de escritorio en los que tiene PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet, ya que son un juego de pelota totalmente diferente. Las principales diferencias con CentOS y con el kernel de Linux de Android son las siguientes: TODOS los controladores se compilan como módulos o integrados, por lo tanto, cualquier distribución de Linux simplemente "funcionará de inmediato". Una vez más, con las distribuciones de Linux de escritorio, tiene una arquitectura, x86, por lo tanto, un kernel de Linux, por ejemplo, una PC Dell, puede funcionar de inmediato en un Lenovo siempre que se compilen los controladores estándar.
No olvide que, en el mundo de Android, hay variaciones del kernel creado para conjuntos de chips ARM específicos, como ARMv6, ARMv7, hay TEGRA, EXYNOS y son binarios incompatibles entre sí. Por lo tanto, si se compila un núcleo para TEGRA, ¡olvídalo, no funcionará en ARMv7!
La razón por la que algunos núcleos en Android parecen estar "rotos" depende del fabricante. Algunos (Zte es un muy buen ejemplo) lanzan una fuente descifrada que puede compilarse desde la fuente pero no se inicia debido a la falta de un controlador que no está cubierto por la licencia GPLv2 o GPLv3. Ese es el problema, por lo tanto, algunos hackers tienen que buscar en Github buscando algunas pistas; algunos fabricantes, si no todos, cumplen. ¡La encarnación actual de la fuente de Zte supuestamente es 2.6.35.7, pero en realidad su base de fuente 2.6.32.9 con muchas modificaciones, por lo tanto, no representa la verdadera fuente del núcleo para 2.6.35.7!
Aquí es donde los fabricantes tienen que lanzar sus respectivas fuentes, no solo por no cumplir con GPLv2 o posterior, sino para que la comunidad pueda modificarlo, como agregar capacidades de overclocking.
Por lo tanto, hay piratería involucrada detrás de escena y muchos problemas con los controladores que intentan que funcione, y tampoco es fácil de depurar. Algunos controladores pueden tener una licencia cruzada, PERO no se pueden distribuir dependiendo de la cláusula y las condiciones como negociado
Afortunadamente, todo eso ha cambiado ahora con la línea de fuentes del kernel 3.xx, ya que los controladores de Android ahora están integrados en las fuentes principales. ¡Pero hay una trampa!
Intente portar un núcleo 3.xx a un teléfono existente que tenga entre 12 y 18 meses; No funcionaría una bola de nieve en el infierno, eso se debe a que, debido a los diferentes factores, las fuentes 3.xx son muy diferentes a la fuente 2.6.x y requerirían mucho pirateo para que funcione. Debería haberlo intentado. puerto 2.6.38.6 fuente para Zte Blade y falló.
Del mismo modo, la última versión del kernel 3.0.1: al trabajar en el proyecto ics4blade en Modaco, ha hecho numerosos intentos de portarlo, pero eso se debe al simple hecho de que Zte hizo un desastre muy malo de la fuente que hizo que la portación fuera casi imposible. .