Jądra różnią się w zależności od producenta. Wiele z tych jąder pochodzi z czystej linii jądra źródeł znalezionych na CAF, a producenci ci pobierają te źródła, modyfikują je w celu dopasowania do stosowanej płyty / chipsetu, a także implementują własne sterowniki.
Rozejrzyj się wokół siebie, są różne ekrany dotykowe, odmiany chipsetów WiFi, nie wspominając o akcelerometrze, czujnikach, bateriach, kompasie, dźwięku, grafice.
Biorąc jedno źródło jądra na przykład HTC nie będzie działać na Samsungu i odwrotnie.
Producenci mogą swobodnie wybierać lub wymieniać różne bity, które zostają wbudowane w płytkę drukowaną. Nie ma w tym żadnych sztywnych ani szybkich zasad. Stąd mnóstwo hakowania / modyfikacji, aby jądro działało poprawnie.
Nie wolno ci nigdy porównywać się z jądrowymi dystrybucjami Linuksa, w których ma on PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet, ponieważ są one zupełnie inną grą typu ball-park. Główne różnice między CentOS i jądrem Linuksa Androida są następujące - WSZYSTKIE sterowniki są kompilowane jako moduły lub wbudowane, dlatego każda dystrybucja Linuksa będzie po prostu „działać od razu po wyjęciu z pudełka”. Ponownie, w przypadku dystrybucji Linuksa na komputery stacjonarne - masz jedną architekturę - x86, stąd jedno jądro Linuksa, powiedzmy, komputer Dell, może działać od razu po wyjęciu z pudełka na Lenovo, pod warunkiem, że skompilowane zostaną standardowe sterowniki.
Nie zapominaj, że w świecie Androida istnieją odmiany jądra zbudowane dla określonych układów ARM, takich jak ARMv6, ARMv7, jest TEGRA, jest EXYNOS i są one binarnie niekompatybilne. Dlatego jeśli jądro jest skompilowane dla TEGRA, zapomnij o nim, nie będzie działać na ARMv7!
Powodem, dla którego niektóre jądra na Androidzie wyglądają na „zepsute”, jest producent. Niektóre (Zte to jeden bardzo dobry przykład) wypuszczają zaśmiecone źródło, które może się kompilować ze źródła, ale nie uruchamia się z powodu brakującego sterownika, który nie jest objęty licencją GPLv2 lub GPLv3. To jest problem, dlatego niektórzy hakerzy muszą przeszukiwać github w poszukiwaniu wskazówek; niektórzy producenci, jeśli nie wszyscy, przestrzegają tego. Obecne wcielenie źródła Zte ma podobno 2.6.35.7, ale w rzeczywistości jego baza źródłowa 2.6.32.9 z wieloma modyfikacjami nie reprezentuje prawdziwego źródła jądra dla 2.6.35.7!
W tym miejscu producenci muszą udostępnić odpowiednie źródła, nie tylko z powodu niezgodności z GPLv2 lub nowszą wersją, ale także ze względu na możliwość modyfikacji przez społeczność, na przykład poprzez dodanie możliwości podkręcania.
W związku z tym za kulisami kryje się hackowanie i wiele zamieszania z kierowcami próbującymi uruchomić go, a także nie jest to łatwe do debugowania. Niektóre sterowniki mogą być licencjonowane krzyżowo, ALE nie można ich dystrybuować w zależności od klauzuli i warunków, takich jak negocjowane.
Na szczęście wszystko to zmieniło się teraz wraz z linią źródeł jądra 3.xx, ponieważ sterowniki Androida są teraz zintegrowane ze źródłami głównego nurtu. Ale jest gotcha!
Spróbuj przenieść jądro 3.xx do istniejącego telefonu, który ma około 12-18 miesięcy; Nie ma szansy na śnieżkę w piekle, czy to zadziałałoby, ponieważ, z powodu różnych czynników, źródła 3.xx różnią się znacznie od źródła 2.6.x i wymagałyby dużo hakowania, aby to działało - powinienem wiedzieć, próbowałem przeniesienie źródła 2.6.38.6 dla Zte Blade i nie powiodło się.
Podobnie, najnowsze wydanie jądra 3.0.1 - pracując nad projektem ics4blade nad Modaco, podjęło liczne próby przeniesienia go, ale to tylko dlatego, że Zte zrobił bardzo zły bałagan ze źródła, który uniemożliwił przeniesienie .