Projekt ogólnego obrazu jądra (GKI)

Jądro usługi, zwane też jądrem urządzenia lub jądrem OEM, to które wysyłasz na urządzenie. Przed wprowadzeniem GKI jądro usługi było wywodzi się z serii zmian w jądrze nadrzędnym. Rysunek 1 pokazuje, jak jądro powstanie jądra usługi (OEM/jądro urządzenia):

Konstrukcja jądra usługi przed GKI

Rysunek 1. Konstrukcja jądra usługi przed GKI.

  1. Jądro Linux długoterminowe (LTS) z kernel.org zostało zmodyfikowane za pomocą poprawek przeznaczonych dla Androida, co prowadzi do wywołania wspólnego jądra systemu Android (ACK).
  2. Potwierdzenie zostało zmodyfikowane przez dostawców, którzy dodali obsługę swojego systemu opartego na układzie Układ SOC. Dostawcy mogą też wprowadzić optymalizacje wydajności lub wydajności. powstałe w ten sposób jądro jest nazywane jądrem dostawcy.
  3. Jądro dostawcy zostało dodatkowo zmodyfikowane przez OEM, dodając do sterowniki urządzeń i ewentualne dostosowania. powstałe jądro, jest nazywany jądrem usługi.

Wszystkie te modyfikacje mogą spowodować nawet 50% jest to kod spoza drzewa, a nie kod źródłowy jądra systemu Linux ani potwierdzenia ACK. Przed wprowadzeniem GKI prawie każde urządzenie miało niestandardowe jądro, które powodowało jego działanie fragmentacji.

Koszty fragmentacji

Fragmentacja jądra ma kilka negatywnych skutków na społeczność Androida.

Aktualizacje zabezpieczeń wymagają dużych nakładów pracy

Poprawki zabezpieczeń cytowane w Biuletyn o bezpieczeństwie Androida (ASB) musi zostać przeniesiona do każdego jądra urządzenia. Jednak ze względu na jądro fragmentacji, rozpowszechnienie poprawek zabezpieczeń w Urządzenia z Androidem w terenie.

Trudno jest połączyć aktualizacje obsługiwane długoterminowo

Wersje obsługiwane przez długi czas (LTS) zawierają poprawki zabezpieczeń i inne poprawki krytycznych błędów. Uzyskiwanie aktualnych informacji o wersjach LTS to najskuteczniejszy sposób na zapewnienie poprawek bezpieczeństwa. Na urządzeniach Pixel odkrył, że 90% problemów z zabezpieczeniami jądra zgłoszonych w ASB zostały już naprawione na urządzeniach, które pozostają aktualne.

Jednak po uwzględnieniu wszystkich niestandardowych modyfikacji w jądrze urządzeń ale trudno jest po prostu scalić poprawki LTS z jądrami urządzeń.

Nie zezwalaj na aktualizacje wersji platformy Androida

Fragmentacja utrudnia realizację nowych funkcji Androida, które wymagają jądra systemu. zmian, które mają zostać dodane do urządzeń w tym polu. Kod Android Framework musi zakładać że obsługiwanych jest nawet 5 wersji jądra i nie ulegać zmianie na nową platformę (Android 10 obsługuje jądra w wersjach 3.18, 4.4, 4.9, 4.14 i 4.19, które w niektórych przypadkach nie mają została wzbogacona o nowe funkcje od Androida 8 w 2017 r.).

Trudno jest przenieść zmiany w jądrze z powrotem do źródłowego systemu Linux

Po wprowadzeniu wszystkich zmian w jądrze większość flagowych urządzeń wersję jądra, która ma co najmniej 18 miesięcy. Na przykład parametr Jądro 4.14 zostało opublikowane przez kernel.org w listopadzie 2017 r. oraz pierwszych telefonów z Androidem wyposażonych w jądro 4.14, które zostały wprowadzone wiosną 2019 roku.

Długie opóźnienie między wydaniem jądra systemu a produktami utrudnia dla społeczności Androida, by przekazywały potrzebne funkcje i motywy jądra systemu operacyjnego.

Napraw fragmentację: ogólny obraz jądra

Projekt ogólnego obrazu jądra (GKI) zajmuje się fragmentacją jądra przez ujednolicenie jądra i przeniesienie obsługi układów SOC i płytek poza jądra. w możliwe do załadowania moduły dostawców. GKI ma również stabilny moduł jądra systemu Interfejs (KMI) modułów dostawcy umożliwiający aktualizowanie modułów i jądra dzięki czemu mogą pracować niezależnie. Oto niektóre cechy jądra GKI:

  • Jądro GKI zostało utworzone ze źródeł ACK.
  • Jądro GKI to plik binarny z jednym jądrem wraz z powiązanymi modułami do załadowania. na architekturę, na wersję LTS (obecnie tylko arm64 w przypadku android11-5.4 i android12-5.4).
  • Jądro GKI jest testowane we wszystkich wersjach platformy Androida, które są obsługiwane w powiązane potwierdzenie. Nie można wycofać funkcji przez cały okres istnienia GKI. wersji jądra systemu operacyjnego.
  • Jądro GKI udostępnia sterownikom w danym kanale LTS stabilną wskaźnik KMI.
  • Jądro GKI nie zawiera kodu specyficznego dla układów scalonych ani płytek.

Obraz architektury GKI znajdziesz w dokumentacji Omówienie jądra systemu.

GKI to złożona zmiana wprowadzana w kilku etapach, zaczynając od jądra systemu w wersji 5.4 w wersji platformy Androida 11.

Wyróżniamy 2 etapy GKI:

  • Aplikacja GKI 1.0 została wprowadzona w Androidzie 11 na urządzeniach Jądro 5.4. GKI 1.0 dotyczy wszystkich urządzeń z jądrem systemu 5.4, nawet tych została uruchomiona na Androidzie 12 lub Androidzie. 13.
  • Aplikacja GKI 2.0 została wprowadzona w Androidzie 12 na urządzeniach jądra systemu 5.10 i jest to nowy standard dla wszystkich urządzeń z i późniejszych jądrach.

GKI 1.0

W GKI 1.0 urządzenia uruchamiane z jądrem w wersji 5.4 muszą przejść testy GKI. (Android 11 i nowsze wersje platformy). Cele GKI 1.0 obejmują:

  • Unikaj regresji w narzędziu Vendor Test Suite (VTS) lub Compatibility Test Suite (CTS) podczas zastępowania jądra usługi GKI.
  • Zmniejszenie obciążenia partnera związanego z aktualizowaniem jądra przy użyciu AOSP i popularnych jąder.
  • Uwzględnij podstawowe zmiany w jądrze Androida w przypadku uaktualniania i uruchamiania urządzeń w wersji na Androida.
  • Nie rób problemów z przestrzenią użytkownika Androida.
  • Rozdziel komponenty sprzętowe od podstawowego jądra jako moduły do załadowania.
.

Dokumentacja GKI 1.0 zawiera Sekcja GKI 1.0.

GKI 2.0

W GKI 2.0 urządzenia uruchamiające ją z jądrem w wersji 5.10 lub nowszej muszą być zgodne jądro GKI (od Androida 12). Podpisany rozruch Obrazy są dostępne i regularnie aktualizowane za pomocą kanału LTS oraz poprawek krytycznych błędów. Stabilność binarna KMI jest zachowywana, więc można zainstalować bez wprowadzania zmian w zdjęciach dostawców. Cele GKI 2.0 obejmują :

  • Nie wprowadzaj znacznych zmian w wydajności ani nie wprowadzaj regresji mocy przy zastępowaniu na działanie jądra systemu GKI.
  • Pozwól partnerom na dostarczanie poprawek zabezpieczeń jądra i poprawek błędów bez dostawcy w danej kategorii.
  • Obniż koszty aktualizowania głównej wersji jądra na urządzeniach (na przykład z wersji 5.10 na jądro LTS z 2021 r.).
  • Utrzymuj jeden plik binarny jądra GKI na architekturę przez aktualizację jądra. z przejrzystym procesem uaktualnienia.
.

GKI 2.0 przedstawia najbardziej aktualny stan jąder Androida. Kernel dokumentacja poza GKI 1.0 i Poprzednie jądra (< = 4,19) odzwierciedlają architekturę GKI 2.0.