Jądro Androida jest oparte na jądrze Linux Long Term Supported (LTS) . W Google jądra LTS są łączone z poprawkami specyficznymi dla Androida, tworząc tak zwane wspólne jądra systemu Android (ACK) .
Nowsze ACK (wersja 5.4 i nowsze) są również znane jako jądra GKI . Jądra GKI obsługują oddzielenie niezależnego od sprzętu ogólnego kodu rdzenia jądra i modułów GKI od modułów dostawców specyficznych dla sprzętu.
Jądro GKI współdziała z modułami dostawców specyficznymi dla sprzętu, zawierającymi system na chipie (SoC) i kod specyficzny dla płyty. Interakcję między jądrem GKI a modułami dostawcy umożliwia interfejs modułu jądra (KMI) składający 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:

Glosariusz jądra
Ta sekcja zawiera terminy używane w całej dokumentacji jądra.
Typy jądra
- Wspólne jądro Androida (ACK)
- Jądro, które jest niższe od jądra LTS i zawiera łatki interesujące społeczność Androida, które nie zostały scalone z głównymi jądrami Linuksa lub jądrami LTS (Long Term Supported). Nowsze ACK (wersja 5.4 i nowsze) są również znane jako jądra GKI, ponieważ obsługują separację niezależnego od sprzętu ogólnego kodu jądra i niezależnych od sprzętu modułów GKI.
- Jądro Android Open Source Project (AOSP).
- Zobacz Wspólne jądro Androida.
- Jądro funkcji
- Jądro, dla którego gwarantowana jest implementacja funkcji wersji platformy. Na przykład w systemie Android 12 dwa jądra funkcji to android12-5.4 i android12-5.10. Funkcje Androida 12 nie mogą zostać przeniesione do jądra 4.19; zestaw funkcji byłby podobny do urządzenia, które zostało uruchomione z 4.19 na R i zaktualizowane do S).
- ogólne jądro rdzenia
- Część jądra GKI , która jest wspólna dla wszystkich urządzeń.
- Jądro ogólnego obrazu jądra (GKI).
- Dowolne nowsze (5.4 i nowsze) jądro ACK (obecnie tylko aarch64). To jądro składa się z dwóch części: podstawowego jądra GKI z kodem wspólnym dla wszystkich urządzeń oraz modułów GKI opracowanych przez Google, które można dynamicznie ładować na urządzeniach tam, gdzie ma to zastosowanie.
- Jądro interfejsu modułu jądra (KMI).
- Zobacz jądro GKI .
- Uruchom jądro
- Jądro, które jest ważne do uruchomienia urządzenia dla danej wersji platformy Android. Na przykład w systemie Android 12 prawidłowe jądra uruchamiania to 4.19, 5.4 i 5.10.
- Jądro obsługiwane przez długi czas (LTS).
- Jądro Linuksa obsługiwane przez 2 do 6 lat. Jądra LTS są wydawane raz w roku i stanowią podstawę każdego z ACK Google.
Rodzaje oddziałów
- Gałąź jądra ACK KMI
- Gałąź, dla której budowane są jądra GKI . Na przykład android12-5.10 i android13-5.15.
- Główna linia Androida
- Podstawowa gałąź programistyczna dla funkcji Androida. Kiedy nowe jądro LTS jest zadeklarowane w górę, odpowiednie nowe jądro GKI jest rozgałęzione od głównej linii systemu Android.
- Linia główna Linuksa
- Podstawowa gałąź programistyczna dla nadrzędnych jąder Linuksa, w tym jąder LTS.
Inne warunki
- Certyfikowany obraz rozruchowy
- Jądro dostarczane w formie binarnej (
boot.img
) i flashowane na urządzeniu. Ten obraz jest certyfikowany w tym sensie, że zawiera wbudowane certyfikaty, dzięki którym Google może zweryfikować, czy urządzenie jest dostarczane z jądrem certyfikowanym przez Google. - Dynamicznie ładowany moduł jądra (DLKM)
- Moduł, który może być ładowany dynamicznie podczas uruchamiania urządzenia w zależności od potrzeb urządzenia. Moduły GKI i dostawcy to oba typy DLKM. Pliki DLKM są wydawane w formie
.ko
i mogą być sterownikami lub dostarczać inne funkcje jądra. - projekt GKI
- Projekt Google zajmujący się fragmentacją jądra poprzez oddzielenie wspólnej podstawowej funkcjonalności jądra od obsługi SoC i płyt specyficznych dla dostawcy do ładowalnych modułów.
- Ogólny obraz jądra (GKI)
- Obraz rozruchowy certyfikowany przez Google, który zawiera jądro GKI zbudowane z drzewa źródeł ACK i nadaje się do flashowania na partycję rozruchową urządzenia z systemem Android.
- KMI
- Interfejs między jądrem GKI a modułami dostawcy, umożliwiający aktualizację 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/OEM za pomocą list symboli poszczególnych partnerów.
- moduły GKI
- Moduły jądra utworzone przez Google, które można dynamicznie ładować na urządzeniach, jeśli ma to zastosowanie. Moduły te są zbudowane jako artefakty jądra GKI i są dostarczane wraz z GKI jako archiwum
system_dlkm_staging_archive.tar.gz
. Moduły GKI są podpisywane przez Google przy użyciu pary kluczy czasu kompilacji jądra i są kompatybilne tylko z jądrem GKI, z którym zostały zbudowane. - Moduł dostawcy
- Moduł specyficzny dla sprzętu opracowany przez partnera i zawierający SoC oraz funkcjonalność specyficzną dla urządzenia. Moduł dostawcy jest typem dynamicznie ładowanego modułu jądra.
Co dalej?
- Jeśli jesteś nowicjuszem w tworzeniu jądra systemu Android, możesz zacząć od przeczytania następujących informacji:
- Długoterminowe stabilne jądra — informacje o nadrzędnych jądrach LTS, które zasilają ACK.
- Wspólne jądra Androida — tło dotyczące ACK.
- Jeśli dopiero zaczynasz przygodę z tworzeniem jądra GKI, zacznij od przeczytania GKI development .
- Jeśli używasz jądra w wersji 4.19 lub starszej i szukasz powiązanej dokumentacji, zapoznaj się z sekcją Przegląd poprzednich jąder (<=4.19) .