Android'in yaygın çekirdekleri

AOSP yaygın çekirdekleri (Android ortak çekirdekleri veya ACK'leri olarak da bilinir) kernel.org çekirdeklerini ve yama içerir. veya ana hat ile birleştirilmemiş Android topluluğunun ilgisini çeken Uzun Vadeli Desteklenen (LTS) çekirdekler. Bu yamalar şunları içerebilir:

  • Android için gereken yukarı akış işlevleri ve işe yarayabilecek çok sayıda işlev özellikler
  • Android cihazlar için hazır ancak henüz geliştirme aşamasında olan özellikler
  • Diğer ekosistem iş ortaklarının faydalı olduğu tedarikçi/OEM özellikleri

android-mainline, Android özelliklerinin birincil geliştirme dalıdır. Linux Linus Torvalds bir yayın paylaştığında ana hat android-mainline adayı serbest bırakmalısınız. 2019'dan önce Android'in yaygın çekirdekleri yakın zamanda bildirilen LTS çekirdeği klonlanıp Android'e özel yamalar. Bu süreç 2019'da yeni Android'i dallandırmak üzere değiştirildi. android-mainline ortak çekirdek. Bu yeni model, aynı sonucu alarak bağlantı noktasını yönlendirme ve Android yamalarını test etme çabası aşamalı olarak. android-mainline, önemli düzeyde sürekli testlere tabi tutuluyor. modeli, çekirdeğin yayınlandığı günden itibaren yüksek kaliteli olmasını sağlar.

Yeni bir LTS yukarı yayın bildirildiğinde karşılık gelen ortak çekirdek dallara ayrılır. başlangıç fiyatı: android-mainline. Böylece iş ortakları, projenin başlamadan önce LTS sürümünün beyanını (android-mainline adresinde birleştirme) gerçekleştireceğiz. yeni bir ortak çekirdek dalı oluşturulduğunda, iş ortakları birleştirme işlemini kolayca değiştirebilir. yeni dala gönderin.

Diğer yaygın çekirdek dalları, ilişkili oldukları LTS çekirdeği. Bu birleştirme işlemleri genellikle LTS sürümü yayınlandıktan hemen sonra yapılır. Örneğin, Linux 6.1.75 yayınlandığında bu sürüm, 6.1 ortak çekirdek (android14-6.1). İş ortaklarının LTS ve Android'e özgü hata düzeltmeleriyle ilgili son gelişmelerden haberdar olmak için çekirdeklerini güncelleme.

ACK KMI çekirdek dalı

GKI çekirdekleri kararlı bir Kernel Modülü Arayüzüne sahiptir. KMI, benzersiz bir deneyim sürümü ve Android platformu sürümü tarafından tanımlandığından dallar adlandırıldı ANDROID_RELEASE-KERNEL_VERSION. Örneğin, 6.1 GKI Android 14 çekirdeği android14-6.1 olarak adlandırılmıştır. Örneğin, Android 15 (AOSP deneysel), GKI çekirdeği android15-6.6 tanıttık.

Çekirdekleri öne çıkarma ve kullanıma sunma

Android 15'ten (AOSP deneysel) önceki en yeni üç çekirdekten herhangi biri nasıl kullanılabileceğini açıklayacağım. Başlangıç Android 15 (AOSP deneysel), en yeni iki çekirdek sürümü bu işlemden ibaret değildir. Projenin lansman çekirdeklerini Android 15'in (AOSP deneysel sürümü) android15-6.6 ve android14-6.1 sürümleri vardır.

Platformu güncellerken çekirdek yükseltmelerine gerek olmadığından bir platform sürümü için en son özelliklere sahip olmayan çekirdekler, lansman için kullanılmaya devam eder. Bu nedenle, program yöneticisi olarak Android 14 (ör. android14-6.1) şu cihazlarda kullanılabilir: yeni sürüme geçirildikten sonra dahi Android 15 (AOSP deneysel).

Android platform sürümü Çekirdekleri başlat Özellik çekirdekleri
Android 15 (AOSP deneysel sürümü) (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 İlişkilendirilmiş BSP'de varsa ek kısıtlamalar geçerli olabilir. platform sürümü için güncellenmiştir. Daha genel olarak belirtmek gerekirse Android Sürüm numarası değeri hedef FCM sürümünü seçin. Görüntüleyin Tedarikçi Firma Arayüzü Nesnesi: çekirdek dallarını eşleştirme inceleyebilirsiniz.

Ortak çekirdek hiyerarşisi

android-mainline'dan dalla

Ortak çekirdek hiyerarşisinin en üst düzeyi Şekil 1'de gösterilmiştir.

android-mainline çekirdeğinden yaygın çekirdekler oluşturma

Şekil 1. android-mainline çekirdeğinden yaygın çekirdekler oluşturma

Yeni Android ortak çekirdeğinin android14-6.1 2022 yılında android-mainline. 2023'te bir sonraki LTS bildirildiğinde android15-6.6, android-mainline alt kuruluş biriminden dallandı.

Şekil 1'de gösterildiği gibi, her çekirdek sürümü iki GKI çekirdeğinin temelini oluşturabilir. Örneğin, android13-5.15 ve android14-5.15 olmak üzere iki v5.15 çekirdek Her ikisi de ilgili platform sürümleri için özellik çekirdekleridir. Bu 5.10 için de geçerliydi; android12-5.10, LTS şu tarihte oluşturulmuştur: açıklandı ve çekirdekte android12-5.10 öğesinden android13-5.10 dallandı özelliklerin geliştirilmesine olanak tanımak için 2021’in ilkbahar aylarında Android 13. Android'i kullanmaya başlama 15 (AOSP deneysel) (2024), yalnızca her çekirdek sürümü için bir yeni GKI çekirdeği (android15-6.1 çekirdeği yoktur).

ACK KMI dalı yaşam döngüsü

Bir ACK KMI dalının yaşam döngüsü aşağıdaki Şekil 2'de gösterilmiştir.

6.6 ACK KMI dalı yaşam döngüsü

Şekil 2. 6.6 ACK KMI dalı yaşam döngüsü

Geliştirme sürecini ve dal yaşam döngüsünü netleştirmek için Şekil 2’de 6.6 için ACK KMI dalları.

Her ACK KMI şubesi, Şekil 2'de belirtilen üç aşamadan geçer: her dalda farklı renkler kullanabilirsiniz. Gösterildiği gibi LTS, 24 saate kadar düzenli olarak birleştirilir. önemli bir parçasıdır.

Geliştirme aşaması

ACK KMI şubesi, oluşturulduğunda geliştirme aşamasına girer ( dev) temsil eder ve bir sonraki Android cihazlar için özellik oldukça önemlidir. Şekil 2'de, android15-6.6 değeri 6.6 olduğunda oluşturulmuştur yeni yukarı yayın LTS çekirdeği olarak tanımlanmıştır.

Sabitleme aşaması

ACK KMI dalı özellik tamamlandı olarak bildirildiğinde stabilizasyon aşaması (Şekil 2'de kararlı olarak etiketlenir). İş ortağı özellikleri ve hata düzeltmeleri hâlâ kabul edilmektedir ancak KMI izleme, değişiklikleri algılamak için etkindir Bunlar arayüzü etkiler. Bu aşamada, KMI'yi bozan değişiklikler kabul edilir KMI tanımı da önceden tanımlanmış bir tempoda güncellenir (normalde her iki hafta). Bkz. Şunun için GKI'ya genel bakış: KMI izlemesiyle ilgili ayrıntılar.

KMI donduruldu safha

Yeni bir platform sürümü AOSP'ye aktarılmadan önce ACK KMI dalı dondurulur. ve dalın kullanım süresi boyunca donmuş olarak kalır. Yani hayır, Ciddi bir güvenlik sorunu tespit edilmediği sürece KMI'yi bozan değişiklikler kabul edilir azaltılması mümkün olmayan bir uygulamadır. KMI'den kaçınmak için kesintiler varsa LTS'den birleştirilmiş bazı yamalar değiştirilebilir veya Android cihazlar için gerekli değildir.

Bir ACK KMI şubesi dondurulduğunda hata düzeltmeleri ve iş ortağı özellikleri kabul edilebilir mevcut KMI ortak çekirdeği bozuk olmadığı sürece bunu yapabilirsiniz. KMI uzatılabilir mevcut KMI'yi oluşturan arayüzler olduğu sürece, dışa aktarılan yeni simgeler için etkilenmez. KMI'ya yeni arayüzler eklendiğinde, kararlı hale gelir ve gelecekteki değişikliklerden etkilenemeyecekleridir.

Örneğin, KMI arayüzü tarafından kullanılan bir yapıya alan ekleyen değişiklik arayüz tanımını değiştirdiğinden genel çekirdeğe izin verilmez:

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);

Ancak, yeni bir işlev eklemek herhangi bir sorun teşkil etmez:

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

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

GKI çekirdeğinin kullanım ömrü boyunca kullanıcı alanı ile geriye dönük uyumluluk çekirdeğin Android platformu için güvenli bir şekilde kullanılabilmesini sağlamak üzere lansman için faydalı olabilir. Önceki sürümlerle sürekli test uyumluluğun korunmasını sağlar. Dolayısıyla Şekil 2'de, android15-6.6 çekirdek, Android 15 (AOSP deneysel) ve sonraki sürümlere sahip cihazlar için kullanılabilir cihazlar. Çünkü Android platformu sürümü önceki sürümlerle de uyumlu olduğundan android14-6.1 çekirdeği kullanılabilir .

KMI oluşturma numarası

Sabitleme aşamasında LTS birleştirmesi olursa veya bir güvenlik sorunu olursa ya da KMI değiştiren yamanın kabul edilmesini gerektiren başka bir etkinlik gerçekleşirse build.config.common için kaydedilen KMI oluşturma numarası artırılır. İlgili içeriği oluşturmak için kullanılan mevcut KMI oluşturma işlemi uname komutu kullanılarak bulunabilir:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

Platform sürümünden sonraki sayı KMI neslidir (bu örnekte 6).

KMI oluşturma yöntemi değişirse çekirdek, tedarikçi modülleriyle uyumlu değildir. Bu nedenle, modüllerin yeniden oluşturulması ve eşzamanlı olarak güncellenir. KMI dondurulduktan sonra KMI oluşturma süreci değişiyor çok nadir olması bekleniyor.

Çekirdekler arasında uyumluluk

Aynı LTS ailesindeki çekirdekler arasındaki uyumluluk şartları: yeni GKI çekirdeklerinden başlayarak değişiyor.

GKI çekirdekleri

GKI çekirdekleri tüm Android platformlarıyla geriye dönük uyumluluk sağlar çekirdek sürümünü destekleyen yeni bir sürüm kullanın. Buna ek olarak, Android platformu sürümleri, önceki sürümlerdeki GKI çekirdekleriyle geriye dönük uyumludur. ODK android14-6.1 çekirdeğini güvenle kullanabilir, Android 14 (2023) yüklü cihazlarda Android 15 (AOSP deneysel sürümü) (2024). Uyumluluk, GKI çekirdekleri için desteklenen tüm sürümlerde sürekli VTS ve CTS testleri.

KMI stabildir, böylece çekirdeğin yeniden derlenmeye gerek kalmadan güncellenebilmesi sağlanır tedarikçi firma görüntüsündeki çekirdek modüllerinin de altını çizin.

KMI uyumluluğu, farklı GKI çekirdekleri arasında korunmaz. Dolayısıyla, örneğin, android14-6.1 çekirdeği android15-6.6 ile değiştirilemez çekirdeğine sahip bir sürümü çalıştırmalıdır.

GKI çekirdekleri yalnızca ilk ve sonraki sürümleri için desteklenir. Eski sürümlerde desteklenmez. Yani android15-6.6 çekirdeği, çalışan devics desteklenmemektedir Android 14 (2023).

Uyumluluk matrisi

Bu tabloda, her Android cihazda desteklenen ve test edilen çekirdek sürümleri gösterilmektedir oldukça önemlidir.

Android platform sürümü Yükseltme için desteklenen çekirdekler Kullanıma sunma için desteklenen çekirdekler
Android 15 (AOSP deneysel sürümü) (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

Destek ömürleri ve güvenlik yamaları

ACK'ler, yukarı akıştan LTS birleştirmeleri ve Android'e özel kodlar için hata düzeltmeleri alır. Bu düzeltmeler, Android ACK ile ilgili Güvenlik Bültenleri.

ACK'ler, karşılık gelen yukarı akış kararlı çekirdeğinden daha uzun süre desteklenebilir. kernel.org adresinde bulabilirsiniz. Böyle durumlarda Google bu belgede gösterilen kullanım ömrü sonuna (EOL) kadar uzatılmış destek sunar. bölümüne bakın. Çekirdekler EOLe geçirildiğinde ve bu uygulamaları çalıştıran cihazların güvenlik açığı olduğu kabul edilir.

Çekirdek 6.6'dan itibaren kararlı çekirdeklerin destek ömrü 4 yıl.

Aşağıdaki tabloda, desteklenen ACK'lerin kullanım ömrü gösterilmektedir:

ACK şubesi Lansman
tarihi
Destek
ömür boyu
(yıl)
Kullanım Ömrü Sonu
android-4.19-kararlı 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
android14-6.1 2022-12-11 6 2029-07-01
android15-6,6 2023-10-29 4 2028-07-01

Yaygın çekirdek testi

Yaygın çekirdekler, aşağı akışa ek olarak çeşitli CI sistemleriyle test edilir. tedarikçiler tarafından gerçekleştirilen testler.

Linux Kernel İşlev Testi

Linux Kernel İşlevsel Testi (LKFT) kselftest, LTP, VTS ve CTS dahil olmak üzere çeşitli test paketlerini bir dizi fiziksel kol32 ve arm64 cihazı. Son test sonuçları bulunabilir burada bulabilirsiniz.

KernelCI testi

KernelCI derleme ve başlatma testleri Yaygın bir çekirdek dalına yeni bir yama uygulandığında başlatılır. Birkaç farklı panolarda test edilip başlatılıyor. Son açtıklarım Android çekirdekleri için sonuçlar bulunabilir burada bulabilirsiniz.

Android yayın öncesi ve yayın sonrası testi

Gönderme öncesi testleri, test sırasında karşılaşılabilecek hataların önüne geçmek Android'in yaygın çekirdekleri. Test sonucu özeti "Kontroller"de bulunabilir sekmesinde bulabilirsiniz.

Android yayın sonrası testi yapılır Android ortak çekirdek dallarında yayınlanan yeni derlemelerde Girerek ci.android.com'da kısmi dal adı olarak aosp_kernel göreceksiniz. sonuç mevcut. Örneğin, android-mainline için sonuçlar bulunabilir burada bulabilirsiniz. Belirli bir derlemeyi tıkladığınızda Test Results sekmesinde test durumunu görürsünüz.

Android platform kaynağı ağacındaki test grubu kernel-presubmit ile test-eşleme yoluyla tanımlanan testler, Android çekirdek dalları için ön gönderme olarak çalıştırılacaktır. Örneğin, test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING yapılandırmasında aşağıdaki yapılandırmanın gerçekleştirilmesi, Android ortak çekirdek kodu giriş işleminde vts_kernel_proc_file_api_test'i presbumit testi olarak etkinleştirir.

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

0 günlük test

0 günlük test, yama bazında test gerçekleştirir . Çeşitli başlatma, işlevsel ve performans testleri yapıldığını varsayalım. Herkese açık gruba katıl cros-kernel-buildreports (cros-kernel-derleme raporları)

Test matrisi

Android ortak çekirdeği Android Platformu sürümleri Test Paketleri
Santral 15 14 13 12 11 10 LKFT KernelCI Gönderme Öncesi Gönderi Gönderme sıfır gün
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

Android'in yaygın kullanılan çekirdeklerine katkıda bulunun

Genel olarak, özellik geliştirme çalışmaları anahat Linux'ta yapılmalı, Android'in yaygın çekirdekleri. Yukarı akış geliştirme kesinlikle teşvik edilir ve söz konusu ACK'ye kolayca geri aktarılabilir duruma getirilebilir. dalmasını isteyin. Android Kernel Ekibi Android ekosistemine fayda sağlayacak geliştirme çalışmalarını desteklemekten memnuniyet duyuyoruz.

Yamaları Gerrit'e gönderme ve bu politikalara uygun şekilde katkıda bulunma kurallarına uygun olmalıdır.