Google zajmie się opracowywaniem innowacji dla Androida w głównym jądrze Linuksa

Na konferencji Linux Plumbers 2021 firma Google opowiadała o powodzeniu swojej inicjatywy polegającej na przejściu platformy Android na zwykłe jądro Linuksa zamiast korzystania z własnej wersji jądra, która obejmuje zmiany specyficzne dla platformy Android.

Najważniejszą zmianą w rozwoju była decyzja o przejściu po 2023 roku na model „Upstream First”, co oznacza rozwój wszystkich nowych funkcji jądra potrzebnych na platformie Android bezpośrednio w głównym jądrze Linuksa, a nie we własnych, odrębnych gałęziach ( funkcjonalność zostanie najpierw awansowana do głównego jądra), a następnie wykorzystana w Androidzie, a nie odwrotnie). Planowane jest także przeniesienie wszystkich dodatkowych poprawek pozostałych w gałęzi Android Common Kernel do jądra głównego w latach 2023 i 2024.

Jeśli chodzi o najbliższą przyszłość, dla platformy Android 12, której premiera planowana jest na początek października, oferowane będą zestawy jądra „Generic Kernel Image” (GKI), możliwie najbardziej zbliżone do zwykłego jądra 5.10. W przypadku tych kompilacji będą dostarczane regularne aktualizacje, które będą publikowane w repozytorium ci.android.com. W jądrze GKI dodatki specyficzne dla platformy Android, a także procedury obsługi sprzętu od producentów OEM są umieszczone w oddzielnych modułach jądra. Moduły te nie są powiązane z wersją głównego jądra i można je rozwijać osobno, co znacznie upraszcza konserwację i przechodzenie urządzeń do nowych gałęzi jądra.

Google zajmie się opracowywaniem innowacji dla Androida w głównym jądrze Linuksa

Wymagane przez producentów urządzeń interfejsy zaimplementowano w formie hooków, które pozwalają na zmianę zachowania jądra bez dokonywania zmian w kodzie. W sumie jądro Androida 12-5.10 oferuje 194 zwykłe zaczepy, podobne do punktów śledzenia i 107 wyspecjalizowanych haków, które pozwalają na uruchamianie procedur obsługi w kontekście nieatomowym. W jądrze GKI producentom sprzętu zabrania się stosowania określonych poprawek do jądra głównego, a komponenty obsługi sprzętu muszą być dostarczane przez dostawców wyłącznie w postaci dodatkowych modułów jądra, które muszą zapewniać kompatybilność z jądrem głównym.

Przypomnijmy, że platforma Android rozwija własną gałąź jądra – Android Common Kernel, na bazie którego tworzone są osobne, specyficzne zespoły dla każdego urządzenia. Każda gałąź Androida daje producentom kilka opcji układu jądra dla swoich urządzeń. Przykładowo Android 11 oferował do wyboru trzy podstawowe jądra – 4.14, 4.19 i 5.4, a Android 12 będzie oferował podstawowe jądra 4.19, 5.4 i 5.10. Opcja 5.10 została zaprojektowana jako ogólny obraz jądra, w którym możliwości niezbędne dla producentów OEM są przenoszone na wyższy poziom, umieszczane w modułach lub przenoszone do wspólnego jądra Androida.

Przed pojawieniem się GKI jądro Androida przeszło kilka etapów przygotowań:

  • W oparciu o główne jądra LTS (3.18, 4.4, 4.9, 4.14, 4.19, 5.4) utworzono gałąź „Android Common Kernel”, do której przeniesiono poprawki specyficzne dla Androida (wcześniej rozmiar zmian sięgał kilku milionów linii ).
  • W oparciu o „Android Common Kernel” producenci chipów, tacy jak Qualcomm, Samsung i MediaTek, utworzyli „SoC Kernel”, które zawierało dodatki do obsługi sprzętu.
  • W oparciu o Jądro SoC producenci urządzeń stworzyli Jądro Urządzenia, które obejmowało zmiany związane z obsługą dodatkowego sprzętu, ekranów, kamer, systemów dźwiękowych itp.

Takie podejście znacznie skomplikowało wdrożenie aktualizacji eliminujących podatności i przejście na nowe gałęzie jądra. Chociaż Google regularnie publikuje aktualizacje jądra Androida (Android Common Kernel), dostawcy często dostarczają te aktualizacje powoli lub zazwyczaj używają tego samego jądra przez cały cykl życia urządzenia.



Źródło: opennet.ru

Dodaj komentarz