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_RELEASE
–KERNEL_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.
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.
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
|
android15-6.6
|
Android 14 (2023) |
android14-6.1
|
android14-6.1
|
Android 13 (2022) |
android13-5.15
|
android13-5.15
|
Android 12 (2021) |
android12-5.10
|
android-4.19-stable
|
Android 11 (2020) |
android11-5.4
|
android11-5.4
|
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
|
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android13-5.15
|
✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android12-5.10
|
✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
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.