Jądro Androida jest oparte na jądrze Linuksa z wsparciem długoterminowym (LTS). W Google jądra LTS są łączone z łatkami specyficznymi dla Androida, tworząc wspólne jądra Androida (ACK).
ACK są tworzone z repozytorium kernel/common. To repozytorium jest nadzbiorem jądra Linuksa z dodatkowymi poprawkami specyficznymi dla Androida.
Potwierdzenia w wersji 5.10 i nowszej są też nazywane jądrami *ogólnych obrazów jądra (GKI). Jądra GKI obsługują rozdzielenie niezależnego od sprzętu ogólnego kodu jądra i modułów GKI od modułów dostawcy zależnych od sprzętu.
Interakcja między jądrem GKI a modułami dostawcy jest możliwa dzięki interfejsowi modułu jądra (KMI), który zawiera listy symboli identyfikujące funkcje i dane globalne wymagane przez moduły dostawcy. Rysunek 1 przedstawia architekturę jądra GKI i modułu dostawcy:
Rysunek 1. Architektura jądra GKI i modułu dostawcy.
Słowniczek terminów związanych z jądrem
Poniżej znajdziesz terminy używane w dokumentacji jądra.
Typy jądra
- Android Common Kernel (ACK)
- Jądro, które jest nowsze niż jądro LTS i zawiera poprawki ważne dla społeczności Androida. Te poprawki nie zostały scalone z główną linią jądra Linuksa ani z jądrami GKI o długim okresie wsparcia.
Jądra w wersji 5.10 i nowszej są też nazywane jądrami Generic Kernel Image (GKI).
- Jądro projektu Android Open Source (AOSP)
- Zobacz Android Common Kernel.
Funkcji Androida 12 nie można przenieść wstecznie do jąder 4.19. Zestaw funkcji byłby podobny do urządzenia, które zostało wprowadzone na rynek z Androidem 11 i jądrem 4.19, a następnie zaktualizowane do Androida 12.
- Jądro Generic Kernel Image (GKI)
Dowolne jądro ACK w wersji 5.10 lub nowszej(tylko aarch64). Jądro GKI składa się z tych 2 części:
Ogólne jądro – część jądra GKI, która jest wspólna dla wszystkich urządzeń.
Moduły GKI – moduły jądra utworzone przez Google, które w odpowiednich przypadkach można dynamicznie wczytywać na urządzeniach. Te moduły są tworzone jako artefakty jądra GKI i dostarczane wraz z GKI w postaci archiwum
system_dlkm_staging_archive.tar.gz
. Moduły GKI są podpisywane przez Google za pomocą pary kluczy czasu kompilacji jądra i są zgodne tylko z jądrem GKI, z którym zostały skompilowane.
- Jądro interfejsu modułu jądra (KMI)
Zobacz jądro GKI.
- Jądro z wsparciem długoterminowym (LTS)
Jądro systemu Linux, które jest obsługiwane przez 2–6 lat. Jądra LTS są wydawane raz w roku i stanowią podstawę każdego z wspólnych jąder Androida Google.
Rodzaje gałęzi
- Gałąź jądra ACK KMI
- Gałąź, dla której tworzone są jądra GKI. Nazwy gałęzi odpowiadają wersjom jądra, np.
android15-6.6
. - Android-mainline
- Główna gałąź programistyczna funkcji Androida. Gdy w przypadku jądra LTS zostanie zadeklarowana nowa wersja, odpowiednie nowe jądro GKI zostanie odgałęzione od android-mainline.
Główna gałąź Linuksa: główna gałąź programistyczna dla jąder Linuksa, w tym jąder LTS.
Inne terminy
- Certyfikowany obraz rozruchowy
- Jądro dostarczane w formacie binarnym (
boot.img
) i zapisywane w pamięci urządzenia. Ten obraz jest uznawany za certyfikowany, ponieważ zawiera wbudowane certyfikaty, dzięki czemu Google może sprawdzić, czy urządzenie jest dostarczane z jądrem certyfikowanym przez Google. - Dynamicznie ładowany moduł jądra (DLKM)
- Moduł, który można dynamicznie wczytywać podczas uruchamiania urządzenia w zależności od jego potrzeb. GKI i moduły dostawcy to 2 rodzaje DLKM. DLKM są udostępniane w formie
.ko
i mogą być sterownikami lub zapewniać inne funkcje jądra. - Projekt GKI
- Projekt Google, który rozwiązuje problem fragmentacji jądra poprzez oddzielenie wspólnych funkcji jądra od specyficznych dla dostawcy funkcji SoC i obsługi płyty głównej w postaci modułów, które można wczytywać.
Ogólny obraz jądra (GKI): obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI utworzone z drzewa źródłowego ACK i nadaje się do wgrania do partycji rozruchowej urządzenia z Androidem.
- Interfejs modułu jądra (KMI)
- Interfejs między jądrem GKI a modułami dostawcy, który umożliwia aktualizowanie modułów dostawcy niezależnie od jądra GKI. Ten interfejs składa się z funkcji jądra i danych globalnych, które zostały zidentyfikowane jako zależności dostawcy lub producenta OEM za pomocą list symboli poszczególnych partnerów.
- Moduł dostawcy
- Moduł specyficzny dla sprzętu opracowany przez partnera, który zawiera układ SoC i funkcje specyficzne dla urządzenia. Moduł dostawcy to rodzaj dynamicznie ładowanego modułu jądra.
Co dalej
Jeśli dopiero zaczynasz tworzyć jądro Androida, przeczytaj te artykuły:
- Jądra stabilne długoterminowo – informacje o jądrach LTS upstream, które są wykorzystywane w ACK.
- Wspólne jądra Androida – informacje o ACK.
Jeśli dopiero zaczynasz tworzyć jądro GKI, przeczytaj artykuł Tworzenie GKI.