Najczęstsze pytania na temat jądra Androida

Ten dokument zawiera najczęstsze pytania na temat jądra Androida, znanego też jako jądro obrazu jądra (General Jądro obrazu). Jeśli nie znasz terminologii GKI i GKI, zapoznaj się z omówieniem jądra.

Czy listy symboli interfejsu Kernel Module Interface (KMI) można zmieniać 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 pozycje 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 wprowadzać 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 gki_defconfig.

Jak naprawić błędy dotyczące wcześniejszych wersji w przypadku zastąpień istniejących modułów GKI?

Jeśli utworzysz moduł dostawcy na podstawie sterownika powszechnego jądra systemu Android (ACK), Twoim obowiązkiem jest dopilnowanie, aby do modułu zostały rozpowszechnione poprawki błędów z podanych wyżej i potwierdzenia. 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 przypadku Androida 12 i protokołu VTS są dostępne testy nagłówka uruchamiania w wersji 3, które sprawdzają istnienie 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_defconfiggki_defconfig+device.fragment.

Czy istnieje obejście dla traktowania modprobe – i _ jako równoważnego?

Strona man modprobe zawiera następujący opis: „modprobe inteligentnie dodaje moduł do jądra Linuksa lub go z niego usuwa. Dla wygody użytkowników nie ma różnicy między znakami _ i - w nazwach modułów (automatyczna konwersja podkreślenia jest wykonywana)”. 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:

  • Uaktualnij ją do android13-5.10 lub android13-5.15 GKI w wersji 2.0 (zdecydowanie 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 lub android12-5.4).

  • Przesyłaj z zainstalowanym certyfikowanym jądrem GKI 2.0 (android12-5.10, android13-5.10 lub android13-5.15) w zależności od wybranej opcji.

Kompilacje GKI 2.0 możesz pobierać z kompilacji wersji obrazu Generic Kernel Image (GKI).