Na proběhlé konferenci Linux Plumbers 2021 společnost Google informovala o úspěších iniciativy na převod platformy Android k použití standardního jádra Linux místo vlastního variantu jádra, které zahrnovalo změny specifické pro platformu Android.
Nejdůležitější změnou v vývoji se stalo rozhodnutí přejít po roce 2023 na model "Upstream First", který předpokládá rozvoj všech nových funkcí jádra potřebných pro platformu Android přímo v hlavním jádru Linux, nikoli v jeho samostatných větvích (funkčnost bude nejprve prosazována do hlavního jádra a poté používána v Androidu, nikoli naopak). Na roky 2023 a 2024 je také naplánováno zařazení všech dodatečných patchů zůstávajících ve větvi Android Common Kernel do hlavního jádra.
Co se týče blízké budoucnosti, pro očekávanou platformu Android 12, která bude dostupná začátkem října, budou nabídnuty sestavení jádra "Generic Kernel Image" (GKI), co nejblíže běžnému jádru 5.10. Pro uvedená sestavení bude poskytováno pravidelné vydávání aktualizací, které budou umístěny v repozitáři ci.android.com. V jádru GKI byly specifické pro platformu Android doplňky, jakož i související ovladače od OEM výrobců přesunuty do samostatných modulů jádra. Tyto moduly nejsou vázány na verzi hlavního jádra a mohou se vyvíjet samostatně, což výrazně usnadňuje údržbu a přechod zařízení na nové větve jádra.

Potřebné rozhraní pro výrobce zařízení je implementováno ve formě hooků, které umožňují měnit chování jádra bez úprav v kódu. V jádře android12-5.10 je navrženo 194 běžných hooků, analogických trasovacím bodům (tracepoint), a 107 specializovaných hooků, které umožňují spouštění zpracovatelů v neatomárním kontextu. V jádru GKI je výrobcům hardwaru zakázáno aplikovat specifické patche na hlavní jádro a komponenty pro podporu hardwaru musí být dodávány dodavateli pouze ve formě dodatečných modulů jádra, které musí být vždy kompatibilní s hlavním jádrem.
Připomínáme, že na platformě Android se vyvíjí vlastní větev jádra — Android Common Kernel, na jehož základě se pro každé zařízení vytvářejí jednotlivé specifické verze. V každé větvi Android dostávají výrobci několik možností uspořádání jader pro svá zařízení. Například v Androidu 11 byly k dispozici tři základní jádra — 4.14, 4.19 a 5.4, a pro Android 12 budou k dispozici základní jádra 4.19, 5.4 a 5.10. Varianta 5.10 je definována jako Generic Kernel Image, ve kterém byly potřebné možnosti pro OEM výrobce předány do upstreamu, vyčleněny do modulů nebo integrovány do Android Common Kernel.
Před vznikem GKI jádro pro Android procházelo několika fázemi přípravy:
- Na základě hlavních LTS jader (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) vznikla odnož „Android Common Kernel“, do které byly převedeny specifické pro Android patche (dříve velikost změn dosahovala několika milionů řádků).
- Na základě „Android Common Kernel“ výrobcové čipů, jako Qualcomm, Samsung a MediaTek, vytvořili „SoC Kernel“, které zahrnovaly doplňky pro podporu hardware.
- Na základě "SoC Kernel" výrobci zařízení vytvářeli "Device Kernel", které zahrnovaly změny spojené s podporou dalšího hardwaru, obrazovek, fotoaparátů, zvukových systémů atd.
Tento přístup výrazně ztížil provádění aktualizací pro odstranění zranitelností a přechod na nové větve jádra. I když Google pravidelně vydává aktualizace svých Android jader (Android Common Kernel), dodavatelé často nepospíchají s dodáváním těchto aktualizací nebo dokonce používají jedno jádro po celou dobu životního cyklu zařízení.

Zdroj: opennet.ru
