Omówienie jądra systemu

Jądro Androida jest oparte na źródle jądra Linuksa z wsparciem długoterminowym (LTS). W Google jądra LTS są łączone z poprawkami dotyczącymi Androida, tworząc tzw. powszechnione jądro Androida (ACK).

Nowsze wersje ACK (5.4 i nowsze) są też nazywane jądrami GKI. Kernele GKI umożliwiają oddzielenie kodu ogólnego rdzenia jądra i modułów GKI od modułów dostawcy.

Rdzenie GKI współpracują z modułami dostawcy, które zawierają system na chipie (SoC) i kod dla konkretnej płyty głównej. Interakcje między jądrem GKI a modułami dostawców są obsługiwane przez interfejs modułu jądra (KMI), który składa się z list symboli identyfikujących funkcje i dane globalne wymagane przez moduły dostawców. Rysunek 1 przedstawia architekturę rdzenia GKI i modułów dostawców:

Architektura GKI
Rysunek 1. Architektura GKI

Słowniczek terminów związanych z jądrem

Ta sekcja zawiera terminy używane w całej dokumentacji jądra.

Typy jąder

Android Common Kernel (ACK)
Jest to jądro, które jest pochodnym jądra LTS i zawiera poprawki interesujące społeczność Androida, które nie zostały scalone z głównym jądrem systemu Linux ani z jądrem długoterminowego wsparcia (LTS). Nowsze wersje ACK (5.4 i nowsze) są też nazywane jądrami GKI, ponieważ obsługują oddzielenie kodu Generic Kernel i modułów GKI niezależnych od sprzętu.
Rdzeń w ramach projektu Android Open Source (AOSP)
Zobacz Android Common Kernel.
Kernel funkcji
Jądro, w którym funkcje platformy są wdrożone. Na przykład w Androidzie 12 były 2 jądra funkcji: android12-5.4 i android12-5.10. Funkcji Androida 12 nie można wstecznie przeportować do jądra 4.19. Zestaw funkcji byłby podobny do tego, który został wprowadzony na urządzeniu z jądrem 4.19 na Androidzie 11 i uaktualnionego do Androida 12.
generic core kernel
Część jądra GKI, która jest wspólna dla wszystkich urządzeń.
Jądro Generic Kernel Image (GKI)
Wersja 5.4 lub nowsza jądra ACK (obecnie tylko aarch64). Kernel ten składa się z 2 części: podstawowego rdzenia GKI z kodem wspólnym dla wszystkich urządzeń oraz modułów GKI opracowanych przez Google, które można ładować dynamicznie na urządzeniach, na których jest to możliwe.
Interfejs Kernel Module Interface (KMI)
Zobacz jądro GKI.
Uruchom jądro
Jądro, które jest odpowiednie do uruchomienia urządzenia w przypadku danej wersji platformy Android. Na przykład w Androidzie 12 prawidłowe jądra to 4.19, 5.4 i 5.10.
Jądro LTS (wsparcie długoterminowe)
Jądro Linuksa, które jest obsługiwane przez 2–6 lat. Jądra LTS są wydawane raz w roku i stanowią podstawę wszystkich aktualizacji ACK Google.

Typy gałęzi

Gałęź jądra ACK KMI
Gałąź, dla której są kompilowane jądra GKI. Na przykład android12-5.10 i android13-5.15.
Android-mainline
Główna gałąź rozwoju funkcji Androida. Gdy nowe jądro LTS zostanie zadeklarowane w gałęzi głównej, odpowiadające mu nowe jądro GKI zostanie odgałęzione od gałęzi android-mainline.
Linuksa głównego
Główna gałąź rozwoju jąder Linuksa, w tym jąder LTS.

Inne terminy

Zatwierdzony obraz rozruchowy
Jądro dostarczone w formie binarnej (boot.img) i wgrane na urządzenie. Ten obraz jest certyfikowany w tym sensie, że zawiera certyfikaty, dzięki którym Google może zweryfikować, czy urządzenie jest dostarczane z jądrem certyfikowanym przez Google.
Moduł jądra wczytywany dynamicznie (DLKM)
Moduł, który może być ładowany dynamicznie podczas uruchamiania urządzenia w zależności od jego potrzeb. GKI i moduły dostawców to oba typy modułów DLKM. Pakiety DLKM są udostępniane w formie .koi mogą być sterownikami lub zapewniać inne funkcje jądra.
Projekt GKI
Projekt Google, który rozwiązuje problem fragmentacji jądra przez oddzielenie funkcji wspólnego jądra od obsługi SoC i płyt konkretnych producentów w zawartych w modulech ładowanych.
Generic Kernel Image (GKI)
Certyfikowany przez Google obraz rozruchu zawierający jądro GKI utworzone na podstawie drzewa źródłowego ACK. Można go wgrać na partycji rozruchu urządzenia z Androidem.
KMI
Interfejs między jądrem GKI a modułami dostawców, który umożliwia aktualizowanie modułów dostawców niezależnie od jądra GKI. Ten interfejs składa się z funkcji jądra oraz danych globalnych, które zostały zidentyfikowane jako zależności od dostawcy lub OEM-a za pomocą listy symboli dla poszczególnych partnerów.
Moduły GKI
Moduły jądra opracowane przez Google, które można wczytywać dynamicznie na urządzeniach, na których jest to możliwe. Te moduły są tworzone jako artefakty rdzenia GKI i są dostarczane wraz z GKI jako archiwum system_dlkm_staging_archive.tar.gz. Moduł GKI jest podpisany przez Google za pomocą pary kluczy do kompilacji jądra i jest zgodny tylko z jądrem GKI, z którego został skompilowany.
Moduł dostawcy
Moduł sprzętowy opracowany przez partnera, który zawiera funkcje związane z układem SoC i urządzeniem. Moduł dostawcy to rodzaj dynamicznie wczytywanego modułu jądra.

Co dalej?

  • Jeśli dopiero zaczynasz zajmować się tworzeniem jądra Androida, przeczytaj te artykuły:
  • Jeśli dopiero zaczynasz zajmować się tworzeniem jądra GKI, zacznij od przeczytania artykułu Tworzenie GKI.