İ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, tedarikçilerin KMI dondurma aşamasından sonra 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 zamanı imzalama altyapısını kullanır. İzin verilenler listesinde görünen veya diğer imzalanmamış modüller tarafından sağlanan sembolleri kullandıkları sürece, imzalanmamış modüllerin 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
Korunan GKI modülü Google tarafından sağlanır, herhangi 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, satıcı modüllerinde veya korunmayan GKI modüllerinde bulunmayan KMI dışı çekirdek sembollerine erişebilir.
- Korumalı GKI modülleri, bir sembol listesinde belirtildiği sürece 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.
- Korumasız GKI modülleri, korumalı 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, satıcı modülleri tarafından geçersiz kılınabilir.
Tedarikçi modülleri
Sağlayıcı 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ülleri içermeyeceğini bekleyebilir. Örneğin, ABC Inc. tedarikçisi, kendi desteği olmadan CONFIG_ABC_SOC_SUPPORT
gibi yapılandırmaların yerleşik veya yüklenebilir GKI modülleri olarak etkinleştirilmeyeceğini tahmin edebilir.
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 birlikte sunulabileceğinden, tedarikçiye özgü 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
ayarlanmadığından tedarikçiler, Greybus tedarikçi modülleri sunabilir. 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. Tedarikçiye özel olmayan sürücüler tedarikçi modülleri olarak sunuluyorsa bu sürücülerin yukarı akış sürümünü kullanmak en iyi uygulamadı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.