Genel Çekirdek Görüntüsü (GKI) projesi

Cihaz çekirdeği veya OEM çekirdeği olarak da bilinen ürün çekirdeği , cihazınıza gönderdiğiniz çekirdektir. GKI'dan önce ürün çekirdeği, bir dizi yukarı yöndeki çekirdek değişikliğinden türetiliyordu. Şekil 1, çekirdek eklemelerinin nasıl bir ürün çekirdeği (OEM/aygıt çekirdeği) sağladığını göstermektedir:

GKI öncesi ürün çekirdeği yapısı

Şekil 1. GKI öncesi ürün çekirdeği yapısı.

  1. Kernel.org'un Linux Uzun Süreli Desteklenen (LTS) çekirdeği, Android'e özgü yamalarla değiştirilerek Android Ortak Çekirdeği (ACK) ortaya çıktı.
  2. ACK, Çip Üzerinde Sistem (SoC) için destek ekleyen satıcılar tarafından değiştirildi. Satıcılar ayrıca performans veya güç optimizasyonları da ekleyebilir. Ortaya çıkan çekirdeğe satıcı çekirdeği adı verilir.
  3. Son olarak, satıcı çekirdeği, OEM'ler tarafından gerekli gördükleri ek aygıt sürücüleri ve özelleştirmelerle daha da değiştirildi. Ortaya çıkan çekirdeğe ürün çekirdeği adı verilir.

Tüm bu değişiklikler, çekirdek kodunun %50 kadarının yukarı akışlı Linux çekirdeklerinden veya ACK'lerden değil, ağaç dışı koddan oluşmasına neden olabilir. GKI'dan önce neredeyse her cihazın, çekirdeğin parçalanmasına neden olan özel bir çekirdeği vardı.

Parçalanmanın maliyetleri

Çekirdek parçalanmasının Android topluluğu üzerinde birçok olumsuz etkisi vardır.

Güvenlik güncellemeleri emek yoğundur

Android Güvenlik Bülteni'nde (ASB) belirtilen güvenlik yamaları, cihaz çekirdeklerinin her birine desteklenmelidir. Ancak çekirdeğin parçalanması nedeniyle, güvenlik düzeltmelerinin sahadaki Android cihazlara yayılması aşırı derecede pahalıdır.

Uzun Süreli Desteklenen güncellemeleri birleştirmek zor

Uzun Süreli Desteklenen (LTS) sürümler, güvenlik düzeltmelerini ve diğer kritik hata düzeltmelerini içerir. LTS sürümleriyle güncel kalmanın, güvenlik düzeltmeleri sağlamanın en etkili yolu olduğu kanıtlanmıştır. Pixel cihazlarda, ASB'de bildirilen çekirdek güvenlik sorunlarının %90'ının güncel kalan cihazlar için zaten giderildiği keşfedildi.

Ancak cihaz çekirdeklerindeki tüm özel değişiklikler nedeniyle LTS düzeltmelerini cihaz çekirdekleriyle birleştirmek zordur.

Android platformu sürüm yükseltmelerini engeller

Parçalanma, çekirdek değişikliği gerektiren yeni Android özelliklerinin sahadaki cihazlara eklenmesini zorlaştırıyor. Android Çerçeve kodu, beş adede kadar çekirdek sürümünün desteklendiğini ve yeni platform sürümü için hiçbir çekirdek değişikliği yapılmadığını varsaymalıdır (Android 10, bazı durumlarda desteklenmeyen 3.18, 4.4, 4.9, 4.14 ve 4.19 çekirdeklerini destekler). 2017'deki Android 8'den bu yana yeni özelliklerle geliştirildi).

Çekirdek değişikliklerini yukarı akış Linux'a geri döndürmek zor

Çekirdekte yapılan tüm değişikliklerle birlikte çoğu amiral gemisi cihazı, halihazırda en az 18 aylık bir çekirdek sürümüyle birlikte geliyor. Örneğin, 4.14 çekirdeği kernel.org tarafından Kasım 2017'de piyasaya sürüldü ve 4.14 çekirdeği kullanan ilk Android telefonlar 2019 baharında piyasaya sürüldü.

Yukarı yöndeki çekirdeğin piyasaya sürülmesi ile ürünler arasındaki bu uzun gecikme, Android topluluğunun gerekli özellikleri ve sürücüleri yukarı yöndeki çekirdeklere beslemesini zorlaştırıyor.

Parçalanmayı düzeltme: Genel Çekirdek Görüntüsü

Genel Çekirdek Görüntüsü (GKI) projesi, çekirdek çekirdeği birleştirerek ve SoC ile kart desteğini çekirdek çekirdekten yüklenebilir satıcı modüllerine taşıyarak çekirdek parçalanmasını giderir. GKI ayrıca satıcı modülleri için kararlı bir Çekirdek Modül Arayüzü (KMI) sunar, böylece modüller ve çekirdek bağımsız olarak güncellenebilir. GKI çekirdeğinin bazı özellikleri şunlardır:

  • GKI çekirdeği ACK kaynaklarından oluşturulmuştur.
  • GKI çekirdeği, tek çekirdekli bir ikili artı LTS sürümüne göre mimari başına ilişkili yüklenebilir modüllerdir (şu anda android11-5.4 ve android12-5.4 için yalnızca arm64).
  • GKI çekirdeği, ilgili ACK için desteklenen tüm Android Platformu sürümleriyle test edilmiştir. GKI çekirdek sürümünün kullanım ömrü boyunca herhangi bir özelliğin kullanımdan kaldırılması söz konusu değildir.
  • GKI çekirdeği, belirli bir LTS içindeki sürücülere kararlı bir KMI sunar.
  • GKI çekirdeği SoC'ye özgü veya karta özgü kod içermez.

GKI mimarisinin bir görüntüsü için Çekirdeğe genel bakış sayfasına bakın.

GKI, Android 11 platformu sürümündeki v5.4 çekirdeklerinden başlayarak birkaç aşamada sunulan karmaşık bir değişikliktir.

Şu anda iki GKI aşaması vardır:

  • GKI 1.0, 5.4 çekirdekli cihazlar için Android 11'de tanıtıldı. GKI 1.0, Android 12 veya Android 13 ile başlatılanlar dahil, 5.4 çekirdekle gönderilen tüm cihazlar için geçerlidir.
  • GKI 2.0, 5.10 çekirdekli cihazlar için Android 12'de tanıtıldı ve 5.10 veya üzeri çekirdeklerle birlikte gönderilen tüm cihazlar için yeni standarttır.

GKI 1.0

GKI 1.0'da, çekirdek sürümü 5.4 ile başlatılan cihazların GKI testini (Android 11 ve sonraki platform sürümleri) geçmesi gerekir. GKI 1.0 hedefleri aşağıdakileri içerir:

  • Ürün çekirdeğini GKI çekirdeğiyle değiştirirken Satıcı Test Paketi (VTS) veya Uyumluluk Test Paketi'nde (CTS) gerilemelerden kaçının.
  • AOSP ortak çekirdekleriyle iş ortaklarının çekirdeklerini güncel tutma yükünü azaltın.
  • Yeni Android sürümleriyle yükseltilen ve başlatılan cihazlar için çekirdeklere temel Android değişikliklerini ekleyin.
  • Android kullanıcı alanını kırmayın.
  • Donanıma özgü bileşenleri çekirdek çekirdekten yüklenebilir modüller olarak ayırın.

GKI 1.0 belgeleri için GKI 1.0 bölümüne bakın.

GKI 2.0

GKI 2.0'da, çekirdek sürümü 5.10 veya üzeriyle başlatılan cihazların GKI çekirdeğiyle (Android 12'den başlayarak) birlikte gönderilmesi gerekir. İmzalı önyükleme görüntüleri mevcuttur ve LTS ve kritik hata düzeltmeleriyle düzenli olarak güncellenir. KMI için ikili kararlılık korunduğundan, bu önyükleme yansımalarını satıcı görüntülerinde değişiklik yapmadan yükleyebilirsiniz. GKI 2.0 hedefleri aşağıdakileri içerir:

  • Ürün çekirdeğini GKI çekirdeğiyle değiştirirken önemli performans veya güç gerilemeleri oluşturmayın.
  • İş ortaklarının, tedarikçi katılımı olmadan çekirdek güvenlik düzeltmeleri ve hata düzeltmeleri sunmasına olanak tanıyın.
  • Cihazlar için ana çekirdek sürümünü güncelleme maliyetini azaltın (örneğin, v5.10'dan 2021 LTS çekirdeğine).
  • Yükseltme için net bir süreçle çekirdek sürümlerini güncelleyerek mimari başına tek bir GKI çekirdek ikili programını koruyun.

GKI 2.0, Android çekirdeklerinin en güncel durumunu temsil eder. GKI 1.0 ve Önceki çekirdekler (<=4.19) alt bölümleri dışındaki çekirdek belgeleri, GKI 2.0 mimarisini yansıtır.