W tym dokumencie znajdziesz odpowiedzi na najczęstsze pytania dotyczące jądra Androida, znanego też jako Generic Kernel Image (GKI). Jeśli nie znasz terminologii związanej z jądrem GKI i GKI, zapoznaj się z artykułem Omówienie jądra GKI.
Czy listy symboli interfejsu Kernel Module Interface (KMI) można zmienić w stabilnej wersji jądra?
Zmiany, które nie wpływają na istniejące KMI, można dodawać do jąder, które są zamrożone. Te zmiany obejmują nowe wyeksportowane funkcje i elementy listy symboli. Więcej informacji znajdziesz w artykule Zarządzanie listami symboli.
Czy mogę zmienić struktury używane przez moduły dostawców w stabilnym jądrze?
Struktury, które są częścią interfejsu KMI, nie mogą być zmieniane w jądrach z zamrożonym KMI. Przed zamrożeniem KMI te struktury mogą ulec zmianie.
Czy mogę zmienić jądro, o ile nie naruszy to zgodności binarnej ani źródłowej?
Zmiany, które nie wpływają na KMI, można wprowadzić zgodnie z opisem w specjalnych poprawkach dotyczących Androida.
Jak GKI obsługuje konfigurację jądra?
Informacje o konfiguracji jądra znajdziesz w artykule Zmiany w pliku gki_defconfig.
Jak obsługiwać poprawki błędów w upstreamie w przypadku zastąpienia dotychczasowych modułów GKI?
Jeśli tworzysz moduł dostawcy na podstawie sterownika w Android Common Kernel (ACK), musisz zadbać o to, aby poprawki błędów z upstreamu i ACK były propagowane do Twojego modułu. Zazwyczaj warto używać jądra i modułów GKI bez wprowadzania zmian, aby te aktualizacje były dostarczane przez Google w sposób spójny.
Czy są testy dotyczące GKI?
Istnieją testy Vendor Test Suite (VTS), które sprawdzają, czy zainstalowana jest certyfikowana wersja GKI, a także czy spełnia ona wymagania dotyczące GKI dla danej wersji. Na przykład w Androidzie 12 dostępne są testy VTS dotyczące nagłówka uruchamiania w wersji 3, które służą do sprawdzania istnienia wymaganych partycji na urządzeniu z jądrem w wersji 5.10.
Jak utworzyć plik fragmentu defconfig projektu na potrzeby kompilacji na urządzeniu?
Wiele urządzeń zgodnych z GKI używa fragmentu konfiguracji, aby opisać opcje konfiguracji potrzebne do tworzenia modułów dostawcy (oprócz gki_defconfig
).
Przykłady, które są częścią kodu źródłowego ACK, to Cuttlefish i DB845c.
Nie da się uniknąć ręcznego sprawdzania opcji konfiguracji w celu optymalizacji fragmentu, ale scripts/diffconfig
z źródeł jądra jest przydatne do porównywania wyników gki_defconfig
i gki_defconfig+device.fragment
.
Czy istnieje obejście problemu polegającego na tym, że modprobe traktuje znaki - i _ jako równoważne?
Strona modprobe man zawiera ten opis: „modprobe
inteligentnie dodaje lub usuwa moduł z jądra Linuxa. Pamiętaj, że dla wygody nie ma różnicy między _ a – w nazwach modułów (automatycznie wykonywana jest konwersja na znak podkreślenia). Zespół GKI przestrzega standardowej konwencji upstream, więc konwencje nazewnictwa narzędzi lub modułów dostawcy muszą być z nią zgodne.
Jak włączyć debugfs do użytku wewnętrznego?
Szczegółowe informacje o włączaniu debugfs znajdziesz w artykule Intruzywne funkcje debugowania na dalszych poziomach.
Jak rozwiązać problem niepasujących ABI między jądrem GKI z włączoną konkretną konfiguracją modułu?
Niezgodne ABI między konfiguracją jądra GKI a modułem stanowią ukrytą zależność konfiguracji modułu, w której włączenie modułu powoduje wbudowanie konfiguracji binarnej w wynikowy obraz jądra. Skontaktuj się z zespołem odpowiedzialnym za jądro Androida (kernel-team@android.com), aby ustalić dalsze działania. Po ustaleniu listy symboli utwórz błąd w Issue Tracker i prześlij zmianę do listy symboli.
Mam w polu urządzenia zgodne z GKI 1.0 z jądrem 5.4, które zostały wprowadzone wraz z Androidem 11 i 12. Jakie opcje aktualizacji jądra są dostępne i jak mogę przetestować te urządzenia podczas aktualizacji do Androida 12 i 13?
Listę obsługiwanych wersji jądra dla wersji wprowadzającej i wersji zaktualizowanych znajdziesz w matryce zgodności. Oto 2 przykłady przejścia na nową wersję:
Przykład 1: użytkownik urządzenia z Androidem 11 i jądrem android11-5.4
(GKI 1.0) może wybrać jedną z tych opcji podczas aktualizacji do Androida 12:
Zaktualizuj jądro
android12-5.10
GKI 2.0 (zalecane).Zachowaj jądro
android11-5.4
.Przejdź na jądro
android12-5.4
.
Przykład 2. Użytkownik urządzenia z Androidem 12 z jądrem android12-5.4
lub android12-5.10
może wybrać jedną z tych opcji podczas aktualizacji do Androida 13:
Przejdź na jądro GKI 2.0 w wersji
android13-5.10
lubandroid13-5.15
(zalecane).Zachowaj jądro
android12-5.4
GKI 1.0.Zachowaj jądro
android12-5.10
GKI 2.0.
W przypadku testów zgodności z zasadami Treble zalecamy wykonanie jednej z tych czynności:
Zastąp ją ją certyfikowanym jądrem GKI 1.0 (
android11-5.4
lubandroid12-5.4
).Przesyłaj z zainstalowanym certyfikowanym jądrem GKI 2.0 (
android12-5.10
,android13-5.10
lubandroid13-5.15
) w zależności od wybranej opcji.
Kompilacje GKI 2.0 możesz pobierać z kompilacji wersji obrazu Generic Kernel Image (GKI).