Jądro Androida – często zadawane pytania

Ten dokument zawiera często zadawane pytania dotyczące jądra Androida, znanego również jako jądro Generic Kernel Image (GKI). Jeśli nie jesteś zaznajomiony z terminologią dotyczącą GKI i jądra GKI, zapoznaj się z przeglądem jądra .

Czy w stabilnym jądrze można zmieniać listy symboli interfejsu modułu jądra (KMI)?

Zmiany, które nie mają wpływu na istniejący KMI, można dodać do zamrożonych jąder. Zmiany te obejmują nowe eksportowane funkcje i wpisy na liście symboli. Aby uzyskać szczegółowe informacje, zobacz Zarządzanie listami symboli .

Czy mogę zmienić struktury używane przez moduły dostawcy w stabilnym jądrze?

Struktury będące częścią interfejsu KMI nie mogą być zmieniane w jądrach z zamrożonym KMI. Przed zamrożeniem KMI struktury te można zmienić.

Czy mogę zmienić jądro, jeśli nie naruszę zgodności plików binarnych/źródłowych?

Zmiany, które nie mają wpływu na KMI, można wprowadzić zgodnie z opisem w łatkach specyficznych dla Androida .

Jak GKI radzi sobie z konfiguracją jądra?

Aby uzyskać informacje na temat konfiguracji jądra, zobacz Zmiany w gki_defconfig .

Jak sobie poradzić z wcześniejszymi poprawkami błędów związanymi z nadpisywaniem istniejących modułów GKI?

Jeśli utworzysz moduł dostawcy w oparciu o sterownik w systemie Android Common Kernel (ACK) , od Ciebie zależy, czy poprawki błędów z źródła źródłowego i ACK zostaną rozesłane do Twojego modułu. Ogólnie rzecz biorąc, w Twoim najlepszym interesie leży używanie jądra GKI i modułów GKI bez modyfikacji, aby Google stale dostarczał te aktualizacje.

Czy istnieją testy specyficzne dla GKI?

Istnieją testy Vendor Test Suite (VTS) , które weryfikują, czy zainstalowana jest certyfikowana kompilacja GKI, a także egzekwują wymagania GKI dla poszczególnych wydań. Istnieją na przykład testy Androida 12 VTS dla nagłówka rozruchowego v3 i sprawdzenia istnienia wymaganych partycji w urządzeniu z jądrem 5.10.

Jak utworzyć fragment pliku defconfig projektu dla kompilacji urządzeń?

Wiele urządzeń zgodnych z GKI używa fragmentu konfiguracji do opisania opcji konfiguracyjnych potrzebnych, oprócz gki_defconfig , do zbudowania modułów dostawcy. Przykłady, które stanowią część bazy kodów ACK, obejmują mątwy i DB845c. Nie ma sposobu, aby uniknąć ręcznego sprawdzania opcji konfiguracyjnych w celu optymalizacji fragmentu, ale scripts/diffconfig ze źródeł jądra są przydatne do porównywania wyników gki_defconfig i gki_defconfig+device.fragment .

Czy istnieje obejście problemu traktowania przez modprobe - i _ jako równoważnego?

Strona podręcznika modprobe zawiera następujący opis: " modprobe inteligentnie dodaje lub usuwa moduł z jądra Linuksa: dla wygody nie ma różnicy pomiędzy _ i - w nazwach modułów (wykonywana jest automatyczna konwersja podkreśleń)." Zespół GKI przestrzega standardowych konwencji wyższego szczebla, zatem narzędzia dostawców lub konwencje nazewnictwa modułów muszą uwzględniać to przestrzeganie.

Jak włączyć debugfs do użytku wewnętrznego?

Aby uzyskać szczegółowe informacje na temat włączania debugfs, zobacz natrętne funkcje debugowania podrzędnego .

Jak mogę rozwiązać niedopasowane interfejsy ABI między jądrem GKI przy włączonej określonej konfiguracji modułu?

Niedopasowane interfejsy ABI pomiędzy jądrem GKI a konfiguracją modułu reprezentują niejawną zależność konfiguracji modułu, gdzie włączenie modułu powoduje wbudowanie konfiguracji binarnej w wynikowy obraz jądra. Skontaktuj się z zespołem jądra Androida ( kernel-team@android.com ), aby określić dalszą ścieżkę. Po ustaleniu listy symboli utwórz błąd w narzędziu do śledzenia problemów i prześlij zmianę do listy symboli.

Mam w terenie urządzenia zgodne z GKI 1.0 z jądrem 5.4, które zostało uruchomione z systemem Android 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 w przypadku wersji uruchamianych i uaktualniających można znaleźć w tabeli kompatybilności . Oto dwa przykłady aktualizacji.

Przykład 1: Użytkownik posiadający urządzenie z systemem Android 11 z jądrem android11-5.4 ( GKI 1.0 ) może wybrać dowolną z poniższych opcji podczas aktualizacji do Androida 12:

  • Zaktualizuj jądro do android12-5.10 GKI 2.0 (zdecydowanie zalecane).

  • Zachowaj jądro android11-5.4 .

  • Uaktualnij jądro do wersji android12-5.4 .

Przykład 2: Użytkownik posiadający urządzenie z systemem Android 12 z jądrem android12-5.4 lub android12-5.10 może wybrać dowolną z poniższych opcji podczas aktualizacji do Androida 13:

  • Zaktualizuj jądro do android13-5.10 lub android13-5.15 GKI 2.0 (zdecydowanie zalecane).

  • Zachowaj jądro android12-5.4 GKI 1.0 .

  • Zachowaj jądro android12-5.10 GKI 2.0 .

Specjalnie w przypadku testów zgodności Treble zalecamy wykonanie jednej z następujących czynności:

  • Zamień jądro partnera na certyfikowane jądro GKI 1.0 ( android11-5.4 lub android12-5.4 ).

  • Dostarczany z certyfikowanym jądrem GKI 2.0 ( android12-5.10 , android13-5.10 lub android13-5.15 ) w zależności od Twojego wyboru.

Kompilacje GKI 2.0 można pobrać z kompilacji wersji Generic Kernel Image (GKI) .