Przegląd jądra

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ądramodułó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:

Architektura 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:

Jeśli dopiero zaczynasz tworzyć jądro GKI, przeczytaj artykuł Tworzenie GKI.