Na odbywającej się konferencji Linux Plumbers 2021 firma Google opowiedziała o postępach w inicjatywie mającej na celu przeniesienie platformy Android na standardowe jądro Linux, zamiast używać własnej wersji jądra, zawierającej zmiany specyficzne dla platformy Android.
Najważniejszą zmianą w rozwoju jest decyzja o przejściu po 2023 roku na model "Upstream First", zakładający rozwój wszystkich nowych możliwości jądra niezbędnych na platformie Android bezpośrednio w głównym jądrze Linux, a nie w oddzielnych gałęziach (funkcjonalność zostanie najpierw wdrożona w głównym jądrze, a potem wykorzystana w Androidzie, a nie odwrotnie). Na lata 2023 i 2024 zaplanowano również przeniesienie do głównego składu jądra wszystkich dodatkowych poprawek pozostałych w gałęzi Android Common Kernel.
Co do najbliższej przyszłości, dla oczekiwanej na początku października platformy Android 12 zostaną zaproponowane wersje jądra "Generic Kernel Image" (GKI), w miarę możliwości zbliżone do standardowego jądra 5.10. Dla wskazanych wersji będą wydawane regularne aktualizacje, które będą publikowane w repozytorium ci.android.com. W jądrze GKI specyficzne dla platformy Android dodatki oraz związane z obsługą sprzętu moduły od producentów OEM zostały przeniesione do osobnych modułów jądra. Te moduły nie są powiązane z wersją głównego jądra i mogą rozwijać się osobno, co znacznie ułatwia utrzymanie i migrację urządzeń do nowych wersji jądra.

Niezbędne dla producentów urządzeń interfejsy zostały zrealizowane w formie haków, które pozwalają na zmianę zachowania jądra bez wprowadzania zmian w kodzie. W jądrze android12-5.10 zaproponowano 194 standardowe haki, podobne do punktów śledzenia (tracepoint), oraz 107 specjalistycznych haków, które pozwalają na uruchamianie programów w kontekście nieatomowym. W jądrze GKI producentom sprzętu zabrania się nakładania specyficznych poprawek na główne jądro, a komponenty do wsparcia sprzętu muszą być dostarczane przez dostawców jedynie w postaci dodatkowych modułów jądra, które muszą być zgodne z głównym jądrem.
Przypominamy, że w platformie Android rozwija się własna gałąź jądra — Android Common Kernel, na podstawie której tworzone są oddzielne, specyficzne kompilacje dla każdego urządzenia. W każdej gałęzi Android producenci mają do dyspozycji kilka wariantów konfiguracji jąder dla swoich urządzeń. Na przykład w Androidzie 11 oferowano do wyboru trzy podstawowe jądra — 4.14, 4.19 i 5.4, a w Androidzie 12 zostaną zaproponowane podstawowe jądra 4.19, 5.4 i 5.10. Wariant 5.10 jest przedstawiony jako Generic Kernel Image, w którym niezbędne możliwości dla producentów OEM są przenoszone do upstreamu, wydawane w moduły lub przenoszone do Android Common Kernel.
Do momentu pojawienia się GKI jądro Androida przechodziło przez kilka etapów przygotowania:
- Na podstawie głównych jądra LTS (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) tworzono odgałęzienie "Android Common Kernel", w które przenoszono specyficzne dla Androida poprawki (wcześniej rozmiar zmian osiągał miliony linii).
- Na podstawie "Android Common Kernel" producenci chipów, tacy jak Qualcomm, Samsung i MediaTek, formowali "SoC Kernel", zawierające dodatki do obsługi sprzętu.
- Na podstawie „SoC Kernel” producenci urządzeń tworzyli „Device Kernel”, który zawiera zmiany związane z obsługą dodatkowego sprzętu, ekranów, aparatów, systemów audio itp.
Takie podejście znacznie utrudniało wprowadzanie aktualizacji mających na celu usunięcie luk oraz przejście na nowe gałęzie jądra. Pomimo regularnego wydawania przez Google aktualizacji swoich jąder Androida (Android Common Kernel), dostawcy często nie spieszą się z ich dostarczaniem lub w ogóle przez cały cykl życia urządzenia korzystają z jednego jądra.

Źródło: opennet.ru
