GKI modülleri
Genel Çekirdek Görüntüsü (GKI) modülleri, genel çekirdek çekirdekten ayrı, önyükleme gerektirmeyen çekirdek işlevselliği sağlamak için kullanılır. GKI modülleriyle, kullanılacak belirli çekirdek işlevlerini seçebilirsiniz; bu, genellikle çekirdek görüntü boyutunu ve çalışma zamanı bellek tüketimini azaltır. Boyutun küçültülmesi, GKI'yı Android Go cihazları ve diğer kaynak kısıtlı form faktörleri için çok uygun hale getirir.
GKI modülleri ayrıca satıcıların KMI donma dönüm noktasından sonra yeni yukarı akış özelliklerini dahil etmelerine olanak tanıyan bir mekanizma sağlar. Yerleşik kod, başka bir görüntü oluşturulmadan değiştirilemez; modül olarak teslim edilen kod ise 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. İmzasız modüllerin, yalnızca izin verilenler listesinde görünen veya diğer imzasız modüller tarafından sağlanan simgeleri kullanması koşuluyla yüklenmesine izin verilir.
İki mantıksal GKI modülü türü vardır: korumalı GKI modülü ve korumasız GKI modülü .
Korumalı GKI modülü
Korumalı bir GKI modülü Google tarafından sağlanır, hiç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:
- Korumalı GKI modülleri, satıcı modülleri veya korumasız GKI modülleri tarafından kullanılamayan KMI dışı çekirdek sembollerine erişime sahiptir.
- Korumalı GKI modülleri, KMI yüzeyinin parçası haline gelen sembolleri, bu semboller bir sembol listesinde belirtildiği sürece dışa aktarabilir.
- Korumalı GKI modülleri satıcı modüller tarafından geçersiz kılınamaz.
Korumalı bir GKI modülü, GKI modüllerinin varsayılan sınıfıdır. KMI dondurulduğunda tüm GKI modüllerinin korumalı olduğu kabul edilir.
Korumasız GKI Modülü
Korumasız bir GKI modülü, satıcı bir modül tarafından geçersiz kılınabilir. KMI dondurulduktan sonra, GKI ekibi satıcıların varsayılan uygulamayı yukarı akışlı Linux'tan yeni özellikler içeren bir sürümle geçersiz kılmaları 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, korumasız modüller, yukarı akış kodu bir Android Ortak Çekirdeğine (ACK) ulaştıktan sonra korumalı olarak yeniden sınıflandırılır. Korumasız GKI modülleri aşağıdaki özelliklere sahiptir:
- Korumasız 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.
- Korumasız GKI modülleri, tüm KMI arayüzlerini çekirdek çekirdeğin bir parçası gibi korumalıdır.
- Korumasız GKI modülleri satıcı modüller tarafından geçersiz kılınabilir.
Satıcı modülleri
SoC ve cihaza özgü işlevleri uygulamak için iş ortakları tarafından bir satıcı modülü sunulur. GKI çekirdeğinin bir parçası olarak teslim edilmeyen mevcut herhangi bir çekirdek modülü, satıcı modülü olarak teslim edilebilir.
GKI projesinin birincil hedeflerinden biri çekirdek çekirdekteki donanıma özel kodu en aza indirmek olduğundan, satıcılar GKI çekirdeğinin kendi donanımlarını açıkça yöneten modüller içermemesini bekleyebilirler. Örneğin, satıcı ABC Inc,
CONFIG_ABC_SOC_SUPPORT gibi yapılandırmaların, bunların desteği olmadan yerleşik veya yüklenebilir GKI modülleri olarak etkinleştirilmemesini bekleyebilir.
ACK'da bir çekirdek sürücüsü veya çerçevesi mevcutsa ancak GKI çekirdeğinin parçası olarak teslim edilmemişse satıcılar sürücüyü değiştirebilir ve onu bir satıcı modülü olarak teslim edebilir. Satıcıya özgü olmayan modüller için bu tür değişikliklerin yapılması önerilmez çünkü aynı işlevsellik gelecekteki bir sürümde GKI çekirdeğiyle birlikte sunulabilir. GKI çekirdeği bir satıcı modülü tarafından sağlanan işlevleri içerdiğinde satıcı modülü yüklenmez. Örneğin,
CONFIG_GREYBUS , Android 11'de GKI için ayarlanmadığından satıcılar greybus satıcı modülleri sunabilir. Ancak
CONFIG_GREYBUS , Android 12'de bir GKI yerleşik veya modülü olarak etkinleştirilebilir; bu durumda greybus satıcı modülleri yüklenmeyecektir. En iyi uygulama, satıcı modülleri olarak teslim ediliyorsa, satıcıya özgü olmayan sürücülerin yukarı akış sürümünü kullanmaktır.
Satıcı modüllerini
vendor veya
vendor_boot görüntüsünde teslim edebilirsiniz. Önyükleme işleminin başlarında gerekli olan modüller
vendor_boot konumunda olmalıdır.
vendor_boot modül yüklemeyle ilişkili bir önyükleme süresi maliyeti vardır.