Ç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. İmzalanmamış modüllerin, yalnızca izin verilenler listesinde yer alan veya diğer imzalanmamış modüller tarafından sağlanan sembolleri kullandıkları sürece yüklenmesine izin verilir.

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

Korumalı 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 bir 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.

Korumasız GKI modülü

Korunmayan bir GKI modülü, bir 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:

  • Korumasız GKI modülleri, dışa aktarılan simgelere satıcı modülleriyle aynı erişime sahiptir.
  • Korumasız GKI modülleri, korumalı GKI modülleri tarafından dışa aktarılan simgeleri dışa aktaramaz.
  • Korumasız GKI modülleri, tüm KMI arayüzlerini temel çekirdeğin bir parçası gibi korumalıdır.
  • Korumasız GKI modülleri satıcı modülleri tarafından geçersiz kılınabilir.

Tedarikçi modülleri

SoC'yi 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 çekirdek modülleri, tedarikçi firma modülü olarak sunulabilir.

GKI projesinin ana hedeflerinden biri, çekirdek çekirdekteki donanıma özgü kodu en aza indirmek olduğundan tedarikçiler, GKI çekirdeğinin kendi donanımlarını açıkça yöneten modüllerin içermemesini bekleyebilir. Örneğin tedarikçi firma ABC Inc., CONFIG_ABC_SOC_SUPPORT gibi yapılandırmaların kendi desteği olmadan yerleşik veya yüklenebilir GKI modülleri olarak etkinleştirilmemesini 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 yerleşik bir GKI veya modül olarak etkinleştirilmiş olabilir. Bu durumda, gribus 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 görüntüsünde yayınlayabilirsiniz. Önyükleme sürecinin başlarında gerekli olan modüller vendor_boot içinde olmalıdır. vendor_boot üzerindeki modüllerin yüklenmesiyle ilişkili bir başlatma zamanı maliyeti vardır.