Çekirdekler üreticiden üreticiye değişir. Bu çekirdeklerin çoğu CAF'ta bulunan saf stok çekirdeği kaynaklarından geliyor, bu üreticilerin yaptığı bu stok kaynaklarını almak, kullanılan tahta / yonga setine göre uygun hale getirmek, kendi sürücülerini uygulamak.
Etrafınıza iyi bakın, dokunmatik ekran varyasyonları, wifi yonga setlerinin varyasyonları, bahsetmiyorum, ivmeölçer, sensörler, piller, pusula, ses, grafik var.
Bir çekirdek kaynağını örneğin HTC'den almak bir Samsung'da çalışmaz, bunun tersi de geçerlidir.
Üreticiler, devre kartına dahil edilen çeşitli bitleri kiraz toplama veya dışarı kaynak yapmakta serbesttirler. Herhangi bir zor ya da hızlı kural yoktur. Bu nedenle çekirdeğin düzgün çalışması için birçok hack / değişiklik.
Tamamen farklı bir top parkı oyunu olduğu için PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet'in bulunduğu masaüstü Linux dağıtım çekirdekleriyle karşılaştırmamalısınız. CentOS ve Android'in Linux Çekirdeği ile büyük farklar şudur - TÜM sürücüler modüller veya yerleşik olarak derlenir, bu nedenle herhangi bir Linux dağıtımı basitçe "kutunun dışında çalışır". Yine, masaüstü Linux dağıtımları ile - bir mimariniz var - x86, dolayısıyla bir Dell PC'den gelen bir Linux çekirdeği , bataklık standart sürücülerinin derlenmesi şartıyla Lenovo'daki kutunun dışında çalışabilir .
Unutmayın, Android dünyasında, ARMv6, ARMv7 gibi belirli ARM yonga kümeleri için oluşturulmuş çekirdeğin varyasyonları var, TEGRA var, EXYNOS var ve bunlar ikili ile uyumsuz. Bu nedenle, TEGRA için bir çekirdek derlenmişse, unutun, ARMv7 üzerinde çalışmaz!
Android'deki bazı çekirdeklerin "bozuk" görünmesinin nedeni üreticiye bağlıdır. Bazıları (Zte çok iyi bir örnektir), kaynaktan derlenebilecek ancak GPLv2 veya GPLv3 lisansı kapsamında olmayan eksik bir sürücü nedeniyle önyükleme yapamayan kasık bir kaynak yayınlar. Sorun bu, bu nedenle bazı bilgisayar korsanları bazı ipuçlarını aramak için github etrafında ovmak zorunda; hepsi olmasa da bazı üreticiler uymaktadır. Zte'nin kaynağının mevcut enkarnasyonunun 2.6.35.7 olduğu iddia ediliyor, ancak gerçekte birçok değişiklik içeren 2.6.32.9 kaynak tabanı, bu nedenle 2.6.35.7 için gerçek çekirdek kaynağını temsil etmiyor!
Bu, üreticilerin sadece GPLv2 veya sonraki sürümlerle uyumlu olmakla kalmayıp aynı zamanda topluluğun modifiye edebilmesi için hız aşırtma yetenekleri eklemek gibi ilgili kaynaklarını serbest bırakmaları gerektiği yerdir.
Bu nedenle sahne arkasında korsanlık ve işe yaramaya çalışan sürücülerle ilgili çok fazla karışıklık var ve hata ayıklamak kolay değil. Bazı sürücüler çapraz lisanslı olabilir , ancak cümle ve koşullara bağlı olarak dağıtılamaz anlaşmalı.
Neyse ki, Android sürücüleri artık ana kaynaklara entegre edildiğinden, tüm bunlar çekirdek 3.xx kaynak hattı ile değişti. Ama bir sorun var!
Yaklaşık 12-18 aylık mevcut bir el cihazına 3.xx çekirdeği taşımaya çalışın; Bir kartopunun cehennemdeki şansı işe yaramazdı, çünkü farklı faktörlerden dolayı, 3.xx kaynakları 2.6.x kaynağından büyük ölçüde farklıdır ve çalışmasını sağlamak için çok fazla hack alacaktı - bilmeliyim, denedim 2.6.38.6 Zte Blade için kaynak taşıma ve başarısız oldu.
Benzer şekilde, en son çekirdek sürümü 3.0.1 - Modaco üzerinde ics4blade projesi üzerinde çalışırken, onu taşımak için çok sayıda girişimde bulundu, ancak bu, Zte'nin taşımayı neredeyse imkansız hale getiren kaynağın çok kötü bir karmaşasını yarattığı gerçeğine bağlı. .