Çekirdek modüllerine genel bakış

İki tür çekirdek modülü vardır: donanımdan bağımsız GKI modülleri ve donanıma özel tedarikçi modülleri. Bu sayfada her iki modül türüne de genel bir bakış sunulmaktadır.

GKI modülleri

Genel çekirdek resmi (GKI) modülleri, genel çekirdek çekirdeğinden ayrı olarak önyükleme için gerekli olmayan çekirdek özelliklerini sunmak için kullanılır. GKI modülleri sayesinde, kullanılacak belirli çekirdek özelliklerini seçebilirsiniz. Bu sayede genellikle çekirdek görüntü boyutunu ve çalışma zamanı bellek tüketimini azaltabilirsiniz. Boyuttaki azalma, GKI'yı Android Go cihazlar ve kaynak kısıtlaması olan diğer form faktörleri için ideal hale getirir.

GKI modülleri, tedarikçi firmaların KMI dondurma aşamasından sonra yeni yayın öncesi özellikleri dahil etmesine olanak tanıyan bir mekanizma da sağlar. Yerleşik kod, başka bir resim oluşturmadan değiştirilemez. Modül olarak yayınlanan kod ise başka bir modülle değiştirilebilir.

GKI modülleri, GKI ile diğer modüller arasında çalışma zamanında ayrım yapmak için çekirdeğin derleme zamanı imzalama altyapısını kullanır. Yalnızca izin verilenler listesinde görünen veya diğer imzasız modüller tarafından sağlanan sembolleri kullandıkları sürece imzasız modüllerin yüklenmesine izin verilir.

İki mantıksal GKI modülü türü vardır: korunan GKI modülü ve korunmayan GKI modülü.

Korunan GKI modülü

Korunan GKI modülü Google tarafından sağlanır, hiçbir şekilde kısıtlanmaz ve yüklendikten sonra çekirdekle oluşturulmuş gibi davranır. Ayrıca, korumalı GKI modülleri aşağıdaki özelliklere sahiptir:

  • Korunan GKI modülleri, tedarikçi modülleri veya korunmayan GKI modülleri tarafından kullanılamayan KMI dışı çekirdek sembollerine erişebilir.
  • Korunan GKI modülleri, bir simge listesinde belirtildiği sürece KMI yüzeyinin parçası haline gelen simgeleri dışa aktarabilir.
  • Korunan GKI modülleri, tedarikçi modülleri tarafından geçersiz kılınamaz.

Korunan GKI modülü, GKI modüllerinin varsayılan sınıfıdır. Tüm GKI modülleri, KMI dondurulduğunda korunmuş olarak kabul edilir.

Korunmayan GKI modülü

Korunmayan bir GKI modülü, tedarikçi modülü tarafından geçersiz kılınabilir. KMI dondurulduktan sonra, GKI ekibi tedarikçi firmaların varsayılan uygulamayı üst Linux'taki yeni özellikleri içeren bir sürümle geçersiz kılması gerektiğine karar verirse korunan bir GKI modülü, korunmasız olarak yeniden sınıflandırılabilir. Bir sonraki GKI sürümünde, yayın öncesi kod Android Ortak Çekirdeği'ne (ACK) yerleştirildikten sonra korumasız modüller korunan olarak yeniden sınıflandırılır. Korunmayan GKI modülleri aşağıdaki özelliklere sahiptir:

  • Korunmayan GKI modülleri, dışa aktarılan simgelere tedarikçi modülleri ile aynı erişime sahiptir.
  • Korunmayan GKI modülleri, korunan GKI modülleri tarafından dışa aktarılan sembolleri dışa aktaramaz.
  • Korunmayan GKI modülleri, tüm KMI arayüzlerini çekirdek çekirdeğin bir parçasıymış gibi korumalıdır.
  • Korunmayan GKI modülleri, tedarikçi modülleri tarafından geçersiz kılınabilir.

Tedarikçi modülleri

SoC ve cihaza özgü özellikleri uygulamak için iş ortakları tarafından bir tedarikçi modülü sağlanır. GKI çekirdeği kapsamında sunulmayan mevcut tüm çekirdek modülleri, tedarikçi firma modülü olarak sunulabilir.

GKI projesinin birincil hedeflerinden biri, çekirdek çekirdekteki donanıma özgü kodu en aza indirmektir. Bu nedenle, tedarikçiler GKI çekirdeğinin kendi donanımlarını açıkça yöneten modüller içermeyeceğini bekleyebilir. Örneğin, ABC Inc. tedarikçisi, CONFIG_ABC_SOC_SUPPORT gibi yapılandırmaların destekleri olmadan yerleşik veya yüklenebilir GKI modülleri olarak etkinleştirilmeyeceğini bekleyebilir.

ACK'de bir çekirdek sürücüsü veya çerçeve varsa ancak GKI çekirdeği kapsamında sunulmuyorsa tedarikçi firmalar sürücüyü değiştirip tedarikçi modülü olarak sunabilir. Aynı özellikler gelecekteki bir sürümde GKI çekirdeğiyle birlikte sunulabileceğinden, tedarikçiye özel olmayan modüller için bu tür değişikliklerden kaçınılması önerilir. GKI çekirdeği bir tedarikçi firma modülü tarafından sağlanan özellikleri içerdiğinde tedarikçi firma modülü yüklenmez. Örneğin, CONFIG_GREYBUS Android 11'de GKI için ayarlanmadığından tedarikçiler greybus tedarikçi modülleri yayınlayabilir. Ancak CONFIG_GREYBUS, Android 12'de GKI yerleşik modülü veya modülü olarak etkinleştirilebilir. Bu durumda, greybus tedarikçi modülleri yüklenmez. Tedarikçiye özgü olmayan sürücülerin tedarikçi modülleri olarak yayınlanması durumunda en iyi uygulama, bu sürücülerin yayın sürümünü kullanmaktır.

Tedarikçi modüllerini vendor veya vendor_boot resminde yayınlayabilirsiniz. Önyükleme sürecinin başlarında gerekli olan modüller vendor_boot içinde olmalıdır. vendor_boot'ten modül yüklemeyle ilişkili bir önyükleme süresi maliyeti vardır.