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](https://source.android.google.cn/static/docs/core/architecture/images/generic-kernel-image-architecture.png?authuser=19&hl=pl)
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
.ko
i 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:
- Stabilne jądra długoterminowe – informacje o jądrach LTS w łańcuchu dostawy, które są przesyłane do ACK.
- Android Common Kernels – informacje o tabeli ACK.
- Jeśli dopiero zaczynasz zajmować się tworzeniem jądra GKI, zacznij od przeczytania artykułu Tworzenie GKI.