Przegląd jądra

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:

Architektura 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 .ko i 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:

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