Jądro Androida jest oparte na jądrze Linux z długoterminowym wsparciem (LTS). W Google jądra LTS są łączone z poprawkami specyficznymi dla Androida, tworząc wspólne jądra Androida (ACK)
Jądra ACK są tworzone na podstawie repozytorium kernel/common. To repozytorium jest nadzbiorem jądra Linux, który zawiera dodatkowe poprawki specyficzne dla Androida.
Jądra ACK w wersji 5.10 i nowszej są też nazywane *jądrami GKI (Generic Kernel Images)*. Jądra GKI obsługują oddzielenie kodu ogólnego jądra niezależnego od sprzętu i modułów GKI od modułów dostawcy specyficznych dla sprzętu modułów dostawcy.
Interakcja między jądrem GKI a modułami dostawcy jest możliwa dzięki interfejsowi modułu jądra (KMI), który składa się z list symboli identyfikujących 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 dotyczący jądra
Poniżej znajdziesz terminy używane w dokumentacji jądra.
Typy jąder
- Wspólne jądro Androida (ACK)
- Jądro, które jest wersją pochodną jądra LTS i zawiera poprawki ważne dla społeczności Androida. Te poprawki nie zostały scalone z główną wersją Linuksa ani z jądrami GKI z długoterminowym wsparciem.
Jądra w wersji 5.10 i nowszej są też nazywane jądrami GKI (Generic Kernel Image).
- Jądro Projektu Android Open Source (AOSP)
- Patrz Wspólne jądro Androida.
Funkcji Androida 12 nie można przenieść 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 GKI (Generic Kernel Image)
Dowolne jądro ACK w wersji 5.10 i 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 można dynamicznie wczytywać na urządzeniach, w których jest to możliwe. Te moduły są tworzone jako artefakty jądra GKI i dostarczane razem z GKI jako archiwum
system_dlkm_staging_archive.tar.gz. Moduły GKI są podpisywane przez Google za pomocą pary kluczy z czasu kompilacji jądra i są zgodne tylko z jądrem GKI, z którym zostały skompilowane.
- Jądro KMI (Kernel Module Interface)
Patrz Jądro GKI.
- Jądro LTS (Long Term Supported)
Jądro Linuksa, które jest obsługiwane przez 2–6 lat. Jądra LTS są udostępniane raz w roku i stanowią podstawę każdego wspólnego jądra Androida Google.
Typy gałęzi
- Gałąź jądra ACK KMI
- Gałąź, na podstawie której są tworzone jądra GKI. Nazwy gałęzi odpowiadają wersjom jądra, np.
android15-6.6. - Android-mainline
- Główna gałąź programistyczna funkcji Androida. Gdy nowa gałąź jądra LTS zostanie zadeklarowana jako upstream, odpowiadające jej nowe jądro GKI zostanie odgałęzione od android-mainline.
Linux mainline : główna gałąź programistyczna jąder Linux, w tym jąder LTS.
Inne terminy
- Certyfikowany obraz rozruchowy
- Jądro dostarczane w postaci binarnej (
boot.img) i zapisywane w pamięci urządzenia. Ten obraz jest uważany za certyfikowany, ponieważ zawiera wbudowane certyfikaty, dzięki czemu Google może sprawdzić, czy urządzenie jest dostarczane z jądrem certyfikowanym przez Google. - Moduł jądra wczytywany dynamicznie (DLKM)
- Moduł, który można dynamicznie wczytać podczas uruchamiania urządzenia w zależności od jego potrzeb. Moduły GKI i moduły dostawcy to typy modułów DLKM. Moduły DLKM są udostępniane w postaci plików
.koi mogą być sterownikami lub zapewniać inne funkcje jądra. - Projekt GKI
- Projekt Google, który ma na celu rozwiązanie problemu fragmentacji jądra przez oddzielenie wspólnych funkcji jądra od funkcji specyficznych dla dostawcy układu SoC i obsługi płyty głównej w modułach wczytywanych.
GKI (Generic Kernel Image) : obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI utworzone na podstawie drzewa źródłowego ACK i nadaje się do zapisania w partycji rozruchowej urządzenia z Androidem.
- KMI (Kernel Module Interface)
- 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/producenta OEM za pomocą list symboli dla poszczególnych partnerów.
- Moduł dostawcy
- Moduł specyficzny dla sprzętu, opracowany przez partnera i zawierający funkcje specyficzne dla układu SoC i urządzenia. Moduł dostawcy to typ modułu jądra wczytywanego dynamicznie.
Co dalej?
Jeśli dopiero zaczynasz tworzyć jądro Androida, przeczytaj te artykuły:
- Jądra LTS (Long Term Stable) - informacje o jądrach LTS, które są podstawą jąder ACK.
- Wspólne jądra Androida – informacje o jądrach ACK.
Jeśli dopiero zaczynasz tworzyć jądro GKI, przeczytaj artykuł Tworzenie jądra GKI.