Przegląd jądra

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:

Architektura GKI
Rysunek 1. Architektura GKI

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?