A 2021-es Linux Plumbers konferencián a Google bemutatta az Android platform Linux alapú kernelre való átállásának sikereit, ahelyett, hogy a platformhoz specifikusan módosított saját kerneljüket használnák.
A fejlesztés legfontosabb változása az volt, hogy 2023 után az "Upstream First" modellbe váltanak, amelynek célja, hogy az Android platformhoz szükséges új kernelfunkciókat közvetlenül a Linux fő kernelében fejlesszék, nem pedig külön ágakon (a funkcionalitás először a fő kernelbe fog bekerülni, majd utána használják az Androidban, nem fordítva). 2023-ra és 2024-re tervezik az Android Common Kernel ágon maradt összes további patch átadását is a fő kernelbe.
A közelgő Android 12 platformhoz, amely október elején várható, "Generic Kernel Image" (GKI) kernel kiadások lesznek elérhetőek, amelyek a lehetőleg a normál 5.10 kernelhez közel álló változatok. A megadott kiadásokhoz rendszeres frissítések fognak elérhetővé válni, amelyeket a ci.android.com tárolóban helyeznek el. A GKI kernelben az Android specifikus kiegészítők, valamint az OEM gyártók támogatásához szükséges modulok külön kernel modulokba kerültek. Ezek a modulok nincsenek szorosan összekapcsolva a fő kernel verziójával, és külön fejleszthetők, ami jelentősen megkönnyíti az eszközök karbantartását és az új kernel ágakra való átállásukat.

A gyártók számára szükséges interfészek hook-ok formájában valósulnak meg, amelyek lehetővé teszik a kernel viselkedésének megváltoztatását anélkül, hogy a kódban változásokat kellene végrehajtani. Az android12-5.10 kernelben összesen 194 általános hook található, amelyek megfelelnek a tracepoint-oknak, és 107 speciális hook, amelyek lehetővé teszik a feldolgozók indítását nem atomikus kontextusban. A GKI kernelben a gyártóknak tilos speciális patch-eket alkalmazniuk a fő kernelre, és a hardvertámogatáshoz szükséges összetevőknek csak olyan kiegészítő kernel modulok formájában kell rendelkezésre állniuk, amelyeknek biztosítaniuk kell a kompatibilitást a fő kernellel.
Emlékeztetünk, hogy az Android platformon egy saját kernelág fejlődik — Android Common Kernel, amely alapján minden eszközhöz külön specifikus összeállítások készülnek. Minden Android-ágban a gyártók számára többféle kernel konfiguráció áll rendelkezésre. Például az Android 11 esetében három alapkernel — 4.14, 4.19 és 5.4 — közül lehetett választani, míg az Android 12-höz a 4.19, 5.4 és 5.10 alapkernelt kínálják. Az 5.10-es verzió Generic Kernel Image néven jelenik meg, amelyben az OEM-gyártók számára szükséges lehetőségeket a fejlettebb rendszerekbe átadták, modulokba szervezték vagy áttelepítették az Android Common Kernelbe.
A GKI megjelenése előtt az Android kernel több előkészítési fázison ment keresztül:
- Az alap LTS kernelen (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) készült egy 'Android Common Kernel' ágazat, amelybe az Android-specifikus javításokat helyezték át (korábban a módosítások mérete több millió sorra rúgott).
- Az 'Android Common Kernel' alapján a chipgyártók, mint a Qualcomm, Samsung és MediaTek, 'SoC Kernel'-t alakítottak ki, amelyek kiegészítéseket tartalmaznak a hardver támogatásához.
- A 'SoC Kernel' alapján az eszközgyártók 'Device Kernel'-t hoztak létre, amelyek tartalmazzák a kiegészítő hardver, képernyők, kamerák, hangrendszerek stb. támogatásával kapcsolatos módosításokat.
Ez a megközelítés jelentősen megnehezítette a biztonsági javításokkal kapcsolatos frissítések eljuttatását és az új kernelágakra való áttérést. Annak ellenére, hogy a Google rendszeresen kiadja az Android kerneljét (Android Common Kernel), a beszállítók gyakran nem sietnek ezeket a frissítéseket kiadni, vagy akár az egész eszköz élettartama alatt ugyanazt a kernelt használják.

Forrás: opennet.ru
