Ç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 genel bir bakış sunulmaktadır.

GKI modülleri

Genel çekirdek görüntüsü (GKI) modülleri, önyükleme için gerekli olmayan çekirdek özelliklerini genel çekirdekten ayrı olarak sunmak için kullanılır. GKI modülleriyle, kullanılacak belirli çekirdek özelliklerini seçebilir, böylece genellikle çekirdek görüntüsünün boyutunu ve çalışma zamanı bellek tüketimini azaltabilirsiniz. Boyutunun küçülmesi, GKI'yı Android Go cihazlar ve kaynak kısıtlamalı diğer form faktörleri için uygun hale getirir.

GKI modülleri, KMI dondurma aşamasından sonra satıcıların yeni yukarı akış özelliklerini dahil etmesine olanak tanıyan bir mekanizma da sağlar. Yerleşik kod, başka bir resim oluşturulmadan değiştirilemezken modül olarak sunulan kod, başka bir modülle değiştirilebilir.

GKI modülleri, çalışma zamanında GKI ile diğer modüller arasında ayrım yapmak için çekirdeğin derleme süresi imzalama altyapısını kullanır. İmzasız modüllerin, yalnızca izin verilenler listesinde görünen veya diğer imzasız 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: korumalı GKI modülü ve korumasız GKI modülü.

Protected GKI module

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

  • Korunan GKI modülleri, satıcı modüllerinde veya korunmayan GKI modüllerinde bulunmayan KMI dışı çekirdek sembollerine erişebilir.
  • Korunan GKI modülleri, bir sembol listesinde alıntılanmaları koşuluyla KMI yüzeyinin parçası olan sembolleri dışa aktarabilir.
  • Korunan GKI modülleri, satıcı modülleri tarafından geçersiz kılınamaz.

Korumalı GKI modülü, varsayılan GKI modülü sınıfıdır. Tüm GKI modülleri, KMI dondurma sırasında korunmuş olarak kabul edilir.

Korunmayan GKI modülü

Korunmayan bir GKI modülü, satıcı modülü tarafından geçersiz kılınabilir. KMI dondurulduktan sonra, GKI ekibi, satıcıların varsayılan uygulamayı yukarı akış Linux'taki yeni özellikleri içeren bir sürümle geçersiz kılması gerektiğine karar verirse korumalı bir GKI modülü korumasız olarak yeniden sınıflandırılabilir. Bir sonraki GKI sürümünde, yukarı akış kodu bir Android Ortak Çekirdeği'ne (ACK) eklendikten sonra korumasız modüller yeniden korunmuş olarak sınıflandırılır. Korunmayan GKI modülleri aşağıdaki özelliklere sahiptir:

  • Korunmayan GKI modülleri, dışa aktarılan sembollere satıcı modülleriyle 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, KMI arayüzlerini çekirdek çekirdeğin bir parçasıymış gibi korumalıdır.
  • Korunmayan GKI modülleri, satıcı modülleri tarafından geçersiz kılınabilir.

Tedarikçi modülleri

Tedarikçi modülü, SoC ve cihaza özel özellikleri uygulamak için iş ortakları tarafından sağlanır. GKI çekirdeğinin bir parçası olarak sunulmayan mevcut çekirdek modülleri, tedarikçi modülü olarak sunulabilir.

GKI projesinin temel hedeflerinden biri, çekirdek çekirdeğindeki donanıma özgü kodu en aza indirmektir. Bu nedenle, satıcılar GKI çekirdeğinin kendi donanımlarını açıkça yöneten modüller içermeyeceğini bekleyebilir. Örneğin, ABC Inc. adlı satıcı, CONFIG_ABC_SOC_SUPPORT gibi yapılandırmaların kendi desteği 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ğinin bir parçası olarak sunulmuyorsa satıcılar sürücüyü değiştirebilir ve satıcı modülü olarak sunabilir. Aynı özellikler gelecekteki bir sürümde GKI çekirdeğiyle sunulabileceğinden, tedarikçiye özel olmayan modüller için bu tür değişiklikler önerilmez. GKI çekirdeği, bir tedarikçi modülü tarafından sağlanan özellikleri içerdiğinde tedarikçi modülü yüklenmez. Örneğin, Android 11'de GKI için CONFIG_GREYBUS ayarlanmamıştır. Bu nedenle, satıcılar Greybus satıcı modüllerini teslim edebilir. Ancak CONFIG_GREYBUS, Android 12'de GKI yerleşiği veya modülü olarak etkinleştirilebilir. Bu durumda greybus satıcı modülleri yüklenmez. En iyi uygulama, tedarikçiye özel olmayan sürücüler tedarikçi modülleri olarak sağlanıyorsa bu sürücülerin yukarı akış 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 konumundan modül yüklemeyle ilişkili bir başlatma süresi maliyeti vardır.