Genel Kernel Görüntüsü (GKI) projesi

Cihaz çekirdeği veya OEM çekirdeği olarak da bilinen ürün çekirdeği, cihazınızla birlikte gönderdiğiniz çekirdektir. GKI'den önce ürün çekirdeği, bir dizi yayın öncesi çekirdek değişikliğinden türetilmiştir. Şekil 1'de, çekirdek eklemelerinin nasıl bir ürün çekirdeği (OEM/cihaz çekirdeği) ürettiği gösterilmektedir:

GKI öncesi ürün çekirdeği oluşturma

Şekil 1. GKI öncesi ürün çekirdeği oluşturma.

  1. kernel.org'daki Linux Uzun Süreli Desteklenen (LTS) çekirdeği, Android'e özel yamalar eklenerek Android Ortak Çekirdeği (ACK) haline getirildi.
  2. ACK, çip üzerinde sistem (SoC) desteği ekleyen tedarikçiler tarafından değiştirildi. Tedarikçiler performans veya güç optimizasyonları da ekleyebilir. Oluşturulan çekirdeğe tedarikçi çekirdeği adı verilir.
  3. Son olarak, tedarikçi çekirdeği OEM'ler tarafından gerekli gördükleri ek cihaz sürücüleri ve özelleştirmelerle daha da değiştirildi. Elde edilen çekirdeğe ürün çekirdeği adı verilir.

Tüm bu değişiklikler, yukarı akış Linux çekirdeklerinden veya ACK'lerden değil, yaklaşık% 50'si kadar çekirdek kodunun ağaç dışı kod olmasına yol açabilir. GKI'den önce neredeyse her cihazda, çekirdek parçalanmasına neden olan özel bir çekirdek vardı.

Parçalanmanın maliyetleri

Çekirdek parçalanması, Android topluluğu üzerinde çeşitli olumsuz etkilere sahiptir.

Güvenlik güncellemeleri yoğun iş yükü gerektirir

Android Güvenlik Bülteni'nde (ASB) belirtilen güvenlik yamaları, cihaz çekirdeklerinin her birine geri bağlanmalıdır. Ancak çekirdek parçalanması nedeniyle, güvenlik düzeltmelerinin kullanımdaki Android cihazlara dağıtılması çok pahalıdır.

Uzun Vadeli Desteklenen güncellemeleri birleştirmek zor

Uzun Süreli Desteklenen (LTS) sürümler, güvenlik düzeltmelerinin yanı sıra diğer kritik hata düzeltmelerini içerir. LTS sürümlerini güncel tutmanı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 cihazlarda zaten düzeltildiği tespit edildi.

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

Android platformu sürümü yükseltmelerini engelle

Parçalama, çekirdek değişikliklerinin sahadaki cihazlara eklenmesini gerektiren yeni Android özelliklerini zorlaştırır. Android Framework kodu, beş çekirdek sürümünün desteklendiğini ve yeni platform sürümü için çekirdek değişikliği yapılmadığını varsaymalıdır (Android 10, 3.18, 4.4, 4.9, 4.14 ve 4.19 çekirdeklerini destekler. Bu çekirdekler bazı durumlarda 2017'deki Android 8'den beri yeni özelliklerle geliştirilmemiştir).

Çekirdek değişikliklerini ana Linux'a geri göndermek zordur

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

Yukarı yönlü çekirdek sürümü ile ürünler arasındaki bu uzun gecikme, Android topluluğunun gerekli özellikleri ve sürücüleri yukarı yönlü çekirdeklere eklemesini 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ştirip SoC ve kart desteğini çekirdek çekirdekten yüklenebilir tedarikçi firma modüllerine taşıyarak çekirdek parçalanmasını giderir. GKI, tedarikçi modülleri için kararlı bir çekirdek modülü arayüzü (KMI) de 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 derlenir.
  • GKI çekirdeği, tek çekirdekli bir ikili dosya ve mimari başına, LTS sürümü başına ilişkili yüklenebilir modüllerden oluşur (şu anda yalnızca android11-5.4 ve android12-5.4 için arm64).
  • GKI çekirdeği, ilişkili ACK için desteklenen tüm Android Platform sürümleriyle test edilir. GKI çekirdek sürümünün kullanım ömrü boyunca özellik desteği sonlandırılmaz.
  • GKI çekirdeği, belirli bir LTS kanalındaki sürücülere kararlı bir KMI sunar.
  • GKI çekirdeği, SoC'ye veya anakartlara özgü kod içermez.

GKI mimarisinin resmi için Çekirdeğe genel bakış başlıklı makaleyi inceleyin.

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

İki GKI aşaması vardır:

  • GKI 1.0, 5.4 çekirdeklerine sahip cihazlar için Android 11'de kullanıma sunulmuştur. GKI 1.0, Android 12 veya Android 13 ile kullanıma sunulan cihazlar da dahil olmak üzere 5.4 çekirdeğiyle birlikte gönderilen tüm cihazlar için geçerlidir.
  • GKI 2.0, Android 12'de 5.10 çekirdeği olan cihazlar için kullanıma sunuldu ve 5.10 veya sonraki ç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 kullanıma sunulan cihazlar GKI testinden geçmelidir (Android 11 ve sonraki platform sürümleri). GKI 1.0 hedefleri şunlardır:

  • Ürün çekirdeğini GKI çekirdeğiyle değiştirirken Satıcı Test Paketi (VTS) veya Uyumluluk Test Paketi (CTS)'nde gerilemelerden kaçının.
  • İş ortaklarının, AOSP'deki ortak çekirdeklerle çekirdeklerini güncel tutma yükünü azaltın.
  • Yeni Android sürümleriyle yükseltilen ve kullanıma sunulan cihazlar için çekirdek Android değişikliklerini çekirdeklere dahil edin.
  • Android kullanıcı alanını bozmayın.
  • Donanıma özgü bileşenleri, yüklenebilir modüller olarak çekirdek çekirdekten 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, 5.10 veya daha yeni bir çekirdek sürümüyle kullanıma sunulan cihazlar GKI çekirdeğiyle (Android 12'den itibaren) gönderilmelidir. İmzalı önyükleme resimleri kullanılabilir ve LTS ile kritik hata düzeltmeleriyle düzenli olarak güncellenir. KMI için ikili program kararlılığı korunduğundan bu önyükleme resimlerini tedarikçi firma resimlerinde değişiklik yapmadan yükleyebilirsiniz. GKI 2.0 hedefleri şunları içerir:

  • Ürün çekirdeğini GKI çekirdeğiyle değiştirirken önemli performans veya güç gerilemelerine neden olmayın.
  • İş ortaklarının, tedarikçi firmanın katılımı olmadan çekirdek güvenlik düzeltmeleri ve hata düzeltmeleri yayınlamasını sağlayın.
  • Cihazların ana çekirdek sürümünü güncelleme maliyetini azaltın (ör. 5.10 sürümünden 2021 LTS çekirdeğine).
  • Çekirdek sürümlerini, net bir yükseltme işlemiyle güncelleyerek mimari başına tek bir GKI çekirdeği ikili programı sürdürün.

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