Os núcleos variam de fabricante para fabricante. Muitos desses kernels vêm da linha de fontes de estoque puro encontrada na CAF, o que esses fabricantes fazem é pegar essas fontes de estoque, modificá-las para se adequarem com base na placa / chipset usado e também implementar seus próprios drivers.
Dê uma boa olhada ao seu redor, há variações de telas sensíveis ao toque, variações de chipsets wifi, sem mencionar acelerômetro, sensores, baterias, bússola, som, gráficos.
Tomar uma fonte de kernel, por exemplo, da HTC não funcionará em uma Samsung e vice-versa.
Os fabricantes são livres para escolher ou terceirizar vários bits que são incorporados à placa de circuito. Não há regras rígidas ou rápidas envolvidas. Daí o monte de hackers / modificações para fazer o kernel funcionar corretamente.
Você nunca deve comparar com os kernels de distribuição Linux de desktop nos quais ele possui PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet, pois são um jogo totalmente diferente. As principais diferenças com o CentOS e com o Linux Kernel do Android são as seguintes: TODOS os drivers são compilados como módulos ou integrados, portanto, qualquer distribuição Linux simplesmente "funciona imediatamente". Novamente, com as distribuições Linux para desktop - você tem uma arquitetura - x86, portanto, um kernel Linux, digamos, um PC Dell, pode funcionar imediatamente em uma Lenovo, desde que os drivers padrão sejam compilados.
Não se esqueça, no mundo Android, há variações do kernel criadas para chipsets ARM específicos, como ARMv6, ARMv7, TEGRA, EXYNOS e binários incompatíveis entre si. Portanto, se um kernel for compilado para o TEGRA, esqueça, ele não funcionará no ARMv7!
A razão pela qual alguns kernels no Android parecem "quebrados" é do fabricante. Alguns (Zte é um exemplo muito bom) lançam uma fonte massacrada que pode ser compilada a partir da fonte, mas falha ao inicializar devido a um driver ausente que não é coberto pela licença GPLv2 ou GPLv3. Esse é o problema, portanto, alguns hackers precisam vasculhar o github procurando algumas pistas; alguns fabricantes, se não todos, cumprem. A encarnação atual da fonte do Zte é supostamente 2.6.35.7, mas, na realidade, sua base da fonte 2.6.32.9 com muitas modificações, portanto, não representa a verdadeira fonte do kernel para a 2.6.35.7!
É aqui que os fabricantes precisam liberar suas respectivas fontes, não apenas por estarem em conformidade com a GPLv2 ou posterior, mas também para que a comunidade possa modificá-la, como adicionar recursos de overclock.
Portanto, há hackers envolvidos nos bastidores e muita confusão com os drivers tentando fazê-lo funcionar, e também não é fácil depurar. Alguns drivers podem ter licença cruzada, mas não podem ser distribuídos dependendo da cláusula e condições, como negociado.
Felizmente, tudo isso mudou agora com a linha de fontes do kernel 3.xx, pois os drivers do Android agora estão integrados às fontes convencionais. Mas tem uma pegadinha!
Tente portar um kernel 3.xx para um telefone existente com cerca de 12 a 18 meses de idade; Não seria a chance de uma bola de neve no inferno funcionar, porque, devido aos fatores diferentes, as fontes 3.xx são muito diferentes da fonte 2.6.x e seriam necessárias muitas invasões para fazê-lo funcionar - eu deveria saber, tentei portando a fonte 2.6.38.6 para o Zte Blade e falhou.
Da mesma forma, a versão mais recente do kernel 3.0.1 - ao trabalhar no projeto ics4blade no Modaco, fez inúmeras tentativas de portá-lo, mas isso se deve ao simples fato de que o Zte fez uma bagunça muito ruim da fonte, o que tornava a transferência quase impossível. .