Typowe jądra Androida

Typowe jądra AOSP (nazywanych też wspólnymi jądrami Androida lub potwierdzeniami potwierdzenia) w ścieżce jądra kernel.org i zawierają poprawki; interesujące dla społeczności Androida, które nie zostały połączone z główną platformą ani Jądro obsługiwane długoterminowo (LTS). Poprawki mogą obejmować:

  • Dodatkowe porty i wyodrębnienia dodatkowych funkcji wymaganych w przypadku Androida funkcje
  • Funkcje są gotowe na urządzenia z Androidem, ale w trakcie opracowywania
  • Funkcje dotyczące dostawców/OEM, które są przydatne dla innych partnerów ekosystemu

android-mainline to główna gałąź programistyczna funkcji Androida. Linux Mainline jest scalany z android-mainline za każdym razem, gdy Linus Torvalds opublikuje do publikacji. Przed 2019 rokiem typowe jądra Androida były utworzonych przez sklonowanie ostatnio zadeklarowanego jądra LTS i dodanie Poprawki przeznaczone dla Androida. Ten proces zmienił się w 2019 roku, aby uwzględnić nowe urządzenie z Androidem. typowe jądro z systemu android-mainline. Ten nowy model pozwala uniknąć znacznego przekierować port i przetestować poprawki Androida, osiągając ten sam efekt. stopniowo. Urządzenie android-mainline jest stale testowane. gwarantuje wysoką jakość jądra od dnia jego opublikowania.

Po zadeklarowaniu nowego kanału LTS na poziomie nadrzędnym pojawi się odpowiednie wspólne jądro od android-mainline. Dzięki temu partnerzy mogą rozpocząć projekt, zanim deklaracji wersji LTS, scalając z android-mainline. Po powstaje nowa wspólna gałąź jądra, partnerzy mogą płynnie zmienić scalanie. źródła do nowej gałęzi.

Inne popularne gałęzie jądra są regularnie scalane ze swoich powiązanych Jądro LTS. Scalanie przeprowadza się zwykle natychmiast po opublikowaniu wersji LTS. Dla: Na przykład po opublikowaniu Linuksa 6.1.75 został on scalony ze wspólną wersją 6.1 jądro (android14-6.1). Zdecydowanie zachęcamy partnerów do zaktualizują ją jądra, aby były wyposażone w kanał LTS i poprawki błędów typowe dla Androida.

Gałąź jądra ACK KMI

Jądro GKI ma stabilny interfejs modułu jądra. KMI jest wyjątkowym według wersji jądra i platformy Androida, więc tag gałęzie mają nazwy ANDROID_RELEASEKERNEL_VERSION. Na przykład 6.1 GKI jądro Androida 14 nazywa się android14-6.1. Dla: Android 15 (eksperymentalny AOSP), jądro GKI android15-6.6 przedstawiliśmy.

Dodawanie i uruchamianie jąder

Przed Androidem 15 (eksperymentalny AOSP) dowolny z 3 najnowszych jąder można wykorzystać do uruchamiania urządzenia. Od Androida 15 (AOSP Experiment) Dwie najnowsze wersje jądra mogą zostaną użyte do uruchomienia urządzenia. Jądro uruchamiania dla Android 15 (eksperymentalny AOSP) to android15-6.6 i android14-6.1.

Ponieważ przy aktualizacji platformy nie są wymagane uaktualnienia jądra jądra systemu, który nie ma najnowszych funkcji danej platformy, nadal służy do uruchamiania urządzeń. Dlatego jądra przeznaczone do Android 14, np. android14-6.1, może być używany na tych urządzeniach nawet po uaktualnieniu wersji platformy do Android 15 (wersja eksperymentalna AOSP).

Wersja platformy Androida Uruchamianie jąder Jądro funkcji
Android 15 (AOSP Experiment) (2024) android15-6.6
android14-6.1
android15-6.6
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.41
android-4.19-stable
android12-5.10
android12-5.4
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

1 Mogą obowiązywać dodatkowe ograniczenia, jeśli powiązany BSP ma została zaktualizowana pod kątem wersji platformy. Ogólnie rzecz biorąc, Numer wersji Androida jądra musi być większa lub równa wartości docelową wersję FCM. Zobacz Obiekt interfejsu dostawcy – dopasowanie gałęzi jądra .

Wspólna hierarchia jądra

Oddział z Android-mainline

Najwyższa hierarchia wspólnego jądra jest przedstawiona na rys. 1.

Tworzenie typowych jąder z jądra Androida-mainline

Rysunek 1. Tworzenie typowych jąder z jądra Androida-mainline

Zwróć uwagę, że nowe popularne jądro Androida android14-6.1 zostało rozgałęzione z android-mainline w 2022 r. W 2023 r., gdy zadeklarowano następny kanał LTS, Usługa android15-6.6 została rozgałęziona od android-mainline.

Jak pokazano na Rys. 1, każda wersja jądra może być podstawą dla dwóch jąder GKI. Na przykład 2 jądro w wersji 5.15 to android13-5.15 i android14-5.15, Oba są jądrem funkcji dla poszczególnych wersji platformy. Ten dotyczył też wersji 5.10, Kanał android12-5.10 został utworzony, gdy kanał LTS był zadeklarowano, a obiekt android13-5.10 został odgałęziony z android12-5.10 w jądrze na wiosnę 2021 r., aby umożliwić rozwój Android 13. Pierwsze kroki z Androidem 15 (AOSP Experiment) (2024), jest tylko po 1 nowym jądrze GKI na wersję jądra (nie ma jądra android15-6.1).

Cykl życia gałęzi ACK KMI

Cykl życia gałęzi KMI ACK przedstawiono poniżej na rys. 2.

6.6 Cykl życia gałęzi KMI ACK

Rysunek 2. 6.6 Cykl życia gałęzi KMI ACK

Aby wyjaśnić proces rozwoju i cykl życia gałęzi, na ilustracji 2 skupiamy się Oddziały ACK KMI dla wersji 6.6.

Każda gałąź ACK KMI przechodzi przez 3 fazy wskazane na rys. 2 przez kolorów w każdej gałęzi. Jak widać, kanał LTS jest regularnie scalany niezależnie fazy.

Faza programowania

Po utworzeniu oddział ACK KMI przechodzi do fazy rozwoju (oznaczonej jako dev na rys. 2) i można przesyłać do nich sugestie dotyczące kolejnych funkcji. wersji platformy. Na rys. 2 obiekt android15-6.6 został utworzony po wprowadzeniu wersji 6.6 zadeklarowano jako nowe jądro LTS nadrzędne.

Faza stabilizacji

Gdy gałąź ACK KMI jest zadeklarowana jako cecha ukończona, trafia do faza stabilizacji (oznaczona na rys. 2 jako stabilna). Funkcje dostępne dla partnerów poprawki błędów są nadal akceptowane, ale śledzenie KMI jest włączone, aby wykrywać wszelkie zmiany które mają wpływ na interfejs. Na tym etapie są akceptowane zmiany powodujące niezgodność KMI. a definicja KMI jest aktualizowana zgodnie ze wstępnie zdefiniowanym cyklem (zwykle co 2 tygodni). Zobacz Omówienie GKI dla na temat monitorowania KMI.

Faza zablokowana KMI

Przed przekazaniem nowej wersji platformy do AOSP gałąź ACK KMI jest zablokowana. i pozostaje zamrożona przez cały okres istnienia gałęzi. Oznacza to, że Zmiany powodujące łagodzenie najważniejszych wskaźników są akceptowane, o ile nie wskazano poważnego problemu z bezpieczeństwem których nie da się zniwelować bez wpływu na stabilną wartość wskaźnika KMI. Aby uniknąć KMI w przypadku awarii, niektóre poprawki scalone z LTS mogą zostać zmodyfikowane lub usunięte, jeśli naprawa nie jest wymagane na urządzeniach z Androidem.

Gdy gałąź ACK KMI jest zablokowana, mogą być akceptowane poprawki błędów i funkcje dla partnerów o ile obecne wspólne jądro KMI nie jest uszkodzone. KMI można wydłużyć z nowymi, wyeksportowanymi symbolami, o ile interfejsy składające się na obecną KMI nie ma wpływu na dane. Po dodaniu do KMI nowych interfejsów od razu działają stabilnie i nie mogą zostać uszkodzone w przyszłości.

Na przykład zmiana polegająca na dodaniu pola do struktury używanej przez interfejs KMI wspólne jądro jest niedozwolone, ponieważ zmienia definicję interfejsu:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

Możesz jednak dodać nową funkcję:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

Przez cały okres istnienia jądra GKI zgodność wsteczna z przestrzenią użytkownika jest aby ją bezpiecznie można było używać na platformie Androida wersji, z którą urządzenie zostało uruchomione. Ciągłe testowanie poprzednich wersji pozwala zachować zgodność. Na rys. 2 android15-6.6 jądra systemu można używać na urządzeniach z Androidem 15 (AOSP Experiment) i nowszymi urządzenia. Ponieważ wersja platformy Androida zgodne z poprzednimi wersjami, można użyć jądra android14-6.1 na urządzenia z Androidem 15 (eksperymentalne AOSP) przed wprowadzeniem na rynek lub uaktualnienie.

Numer generowania KMI

Jeśli podczas fazy stabilizacji wystąpi scalanie kanału LTS lub wystąpi problem z zabezpieczeniami, kolejne zdarzenie, które wymaga zaakceptowania poprawki zmieniającej KMI, Numer generowania KMI zarejestrowany w build.config.common jest zwiększany. bieżącą generację KMI można znaleźć za pomocą polecenia uname:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

Numer po wydaniu platformy to numer KMI (w tym przypadku 6).

Jeśli generacja KMI ulegnie zmianie, jądro nie będzie zgodne z modułami dostawcy zgodne z poprzednią generacją KMI, dlatego moduły należy ponownie skompilować aktualizowany synchronicznie przy użyciu jądra systemu operacyjnego. Po zawieszeniu KMI zmienia się sposób generowania KMI będzie bardzo rzadki.

Zgodność jądra systemu

Wymagania dotyczące zgodności między jądrami w tej samej rodzinie LTS są: wraz z zastosowaniem nowych jąder GKI.

Jądro GKI

Jądro GKI zachowują zgodność wsteczną ze wszystkimi platformami Androida które obsługują tę wersję jądra systemu operacyjnego. Dodatkowo platforma Android są zgodne wstecznie z jądrami GKI z poprzednich wersji. No więc możesz bezpiecznie używać jądra android14-6.1 opracowanego dla Android 14 (2023) na urządzeniach z systemem Android 15 (AOSP Experiment) (2024 r.). Zgodność jest weryfikowana przez ciągłe testy VTS i CTS jądra GKI ze wszystkimi obsługiwanymi wersjami;

KMI jest stabilne, więc można zaktualizować jądro bez konieczności odbudowy modułów jądra w obrazie dostawcy.

Zgodność KMI między różnymi jądrami GKI nie jest zachowywana. A więc, na przykład jądra android14-6.1 nie można zastąpić kodem android15-6.6 jądra systemu bez odbudowy wszystkich modułów.

Jądra GKI są obsługiwane tylko w ich początkowych i kolejnych wersjach. Nie są one obsługiwane w przypadku starszych wersji. Czyli Jądro android15-6.6 nie jest obsługiwane w przypadku działających deweloperów Android 14 (2023).

Macierz zgodności

Ta tabela zawiera obsługiwane i przetestowane wersje jądra na poszczególnych urządzeniach z Androidem wersji platformy.

Wersja platformy Androida Jądra obsługiwane na potrzeby uaktualnienia Jądro obsługiwane przy uruchamianiu
Android 15 (AOSP Experiment) (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android15-6.6
android14-6.1
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

Bezterminowa pomoc i poprawki zabezpieczeń

Potwierdzenia otrzymują scalone kody LTS ze strumienia źródłowego i poprawki błędów w kodzie Androida. Obejmują one wszystkie poprawki zabezpieczeń jądra wymienione w miesięcznej wersji Androida Biuletyny bezpieczeństwa związane z potwierdzeniem.

Potwierdzenia mogą być obsługiwane dłużej niż przez odpowiednie, stabilne jądro nadrzędne znajdziesz na kernel.org. W tym przypadku Google zapewnia rozszerzoną pomoc do daty końca okresu eksploatacji podanej w tym . Po wyłączeniu jądra przestaje być obsługiwanych przez Google, a urządzenia z takimi aplikacjami są uznawane za podatne na ataki.

Począwszy od jądra w wersji 6.6 okres obsługi stabilnych jąder wynosi 4 lata.

Ta tabela zawiera okresy ważności obsługiwanych potwierdzeń:

Gałąź ACK Data
wprowadzenia
Pomoc
cały okres
(lata)
okres eksploatacji
stabilny Android 4.19 2018-10-22 6 2025-01-01
Android11-5.4 2019-11-24 6 2026-01-01
Android12-5.4 2019-11-24 6 2026-01-01
Android12-5.10 2020-12-13 6 2027-07-01
Android13–5.10 2020-12-13 6 2027-07-01
Android13–5.15 2021-10-31 6 2028-07-01
Android14–5.15 2021-10-31 6 2028-07-01
Android 14–6.1 2022-12-11 6 2029-07-01
Android 15–6.6 2023-10-29 4 2028-07-01

Typowe testowanie jądra systemu

Typowe jądra są testowane nie tylko w kolejnych, ale też w kilku systemach CI testowania przez dostawców.

Test funkcjonalny jądra systemu Linux

Test funkcji jądra systemu Linux (LKFT) inicjują różne zestawy testowe, w tym kselftest, LTP, VTS i CTS na fizyczne urządzenia arm32 i arm64. Gdzie można znaleźć ostatnie wyniki testów tutaj.

Testowanie KernelCI

Testy kompilacji i uruchamiania KernelCI są inicjowana za każdym razem, gdy nowa poprawka zostanie zatwierdzona we wspólnej gałęzi jądra. Kilka setek konfiguracji kompilacji jest testowanych i uruchamianych na różnych płytach. Ostatnio używane wyniki dla jąder Androida tutaj.

Testowanie przed przesłaniem i po przesłaniu na Androida

Testy przed przesłaniem służą do zapobiegania wprowadzaniu błędów w kodzie Typowe jądra Androida Podsumowanie wyników testu znajdziesz na stronie „Weryfikacja” zmiany kodu we wspólnym jądrze Androida.

Przeprowadzane jest testy postsubmit na Androidzie w nowych opublikowanych kompilacjach w typowych gałęziach jądra Androida, gdy nowe poprawki są przydzielane do wspólnej gałęzi jądra Androida w ci.android.com. Wpisanie aosp_kernel jako częściowa nazwa gałęzi w ci.android.com, zobaczysz listę gałęzi jądra z oznaczeniem wyników. Można np. znaleźć wyniki dla hasła android-mainline tutaj. Gdy klikniesz konkretną kompilację, na karcie Test Results zobaczysz stan testu.

W przypadku gałęzi jądra Androida testy zdefiniowane w ramach mapowania testów z grupą testową kernel-presubmit w drzewie źródła platformy Androida zostaną uruchomione jako wstępne przesłanie. Na przykład poniższa konfiguracja w instrukcji test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING spowoduje włączenie vts_kernel_proc_file_api_test jako testu wstępnego podczas odprawiania kodu typowego jądra Androida.

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

Testuj przez 0 dni

0-dniowe testy umożliwiają przetestowanie każdej poprawki po wprowadzeniu poprawek. we wszystkich popularnych gałęziach jądra Androida po zatwierdzeniu nowych poprawek. Różne w których przeprowadzamy testy rozruchowe, funkcjonalne i wydajne. Dołącz do grupy publicznej raporty kompilacji cros-kernel

Zestaw testów

Wspólny jądro Androida Wersje platformy Androida Pakiety testowe
Główny 15 14 13 12 11 10 LKFT, jądra CI Przed przesłaniem Przesłanie posta 0 dni
android-mainline
android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable

Współtwórz popularne jądra Androida

Funkcje należy programować w mainline Linux, a nie na komputerze. Typowe jądra Androida Zdecydowanie zalecamy rozwój w poziomie wyższym, a po programowania, można łatwo przenieść do konkretnego potwierdzenia. gałąź w miarę potrzeb. Zespół jądra Androida z przyjemnością wspieram rozwój rozwiązań z korzyścią dla ekosystemu Androida.

Prześlij poprawki do Gerrit i przestrzegać wskazówkami na temat przesyłania treści.