Android çekirdeği hakkında sık sorulan sorular

Bu belgede, Android çekirdeği (Generic Kernel Image - GKI çekirdeği olarak da bilinir) hakkında sık sorulan sorular yer almaktadır. GKI ve GKI çekirdeği terminolojisi hakkında bilginiz yoksa Çekirdeğe genel bakış başlıklı makaleyi inceleyin.

Kararlı bir çekirdekte Kernel Module Interface (KMI) sembol listeleri değiştirilebilir mi?

Mevcut KMI'yi etkilemeyen değişiklikler, dondurulmuş çekirdeklere eklenebilir. Bu değişiklikler, yeni dışa aktarılan işlevleri ve sembol listesi girişlerini içerir. Ayrıntılı bilgi için Sembol listelerini yönetme başlıklı makaleye bakın.

Kararlı bir çekirdekte tedarikçi modülleri tarafından kullanılan yapıları değiştirebilir miyim?

KMI arayüzünün parçası olan yapılar, KMI'nin dondurulduğu çekirdeklerde değiştirilemez. KMI dondurulmadan önce bu yapılar değiştirilebilir.

İkili veya kaynak uyumluluğunu bozmadığım sürece çekirdeği değiştirebilir miyim?

KMI'yi etkilemeyen değişiklikler, Android'e özel yamalarda açıklandığı şekilde yapılabilir.

GKI, çekirdek yapılandırmasını nasıl ele alır?

Çekirdek yapılandırması hakkında bilgi için Changes to gki_defconfig başlıklı makaleye bakın.

Mevcut GKI modüllerinin üzerine yazma işlemleri için yukarı akış hata düzeltmelerini nasıl ele alabilirim?

Android Ortak Çekirdeği (ACK)'ndeki bir sürücüye dayalı bir tedarikçi modülü oluşturursanız yukarı akıştan ve ACK'den gelen hata düzeltmelerinin modülünüze aktarılmasını sağlamak sizin sorumluluğunuzdadır. Genel olarak, bu güncellemelerin Google tarafından tutarlı bir şekilde sağlanması için GKI çekirdeğini ve GKI modüllerini değişiklik yapmadan kullanmanız sizin yararınıza olur.

GKI'ya özel testler var mı?

Sertifikalı bir GKI derlemesinin yüklendiğini doğrulayan ve yayın başına GKI şartlarını zorunlu kılan Vendor Test Suite (VTS) testleri vardır. Örneğin, Android 12'de başlatma üstbilgisi v3 için VTS testleri ve 5.10 çekirdeği çalıştıran bir cihazda gerekli bölümlerin varlığını doğrulamak için VTS testleri vardır.

Cihaz derlemeleri için proje defconfig parçası dosyasını nasıl oluşturabilirim?

GKI uyumlu birçok cihaz, satıcı modüllerini oluşturmak için gki_defconfig'ya ek olarak gereken yapılandırma seçeneklerini açıklamak üzere bir yapılandırma parçası kullanır. ACK kod tabanının parçası olan örneklere Cuttlefish ve DB845c dahildir. Parçayı optimize etmek için yapılandırma seçeneklerinin manuel olarak incelenmesi kaçınılmazdır. Ancak scripts/diffconfig, çekirdek kaynaklarından gki_defconfig ve gki_defconfig+device.fragment sonuçlarını karşılaştırmak için yararlıdır.

modprobe'un - ve _ karakterlerini eşdeğer olarak ele almasıyla ilgili geçici bir çözüm var mı?

modprobe man sayfası şu açıklamayı içerir: "modprobe Bir modülü Linux çekirdeğine akıllıca ekler veya Linux çekirdeğinden akıllıca kaldırır: Kolaylık sağlamak için modül adlarında _ ile - arasında fark olmadığını unutmayın (otomatik alt çizgi dönüştürme işlemi gerçekleştirilir)." GKI ekibi, standart yukarı akış kuralına uyar. Bu nedenle, tedarikçi araçları veya modül adlandırma kuralları bu uyumu dikkate almalıdır.

Dahili kullanım için debugfs'yi nasıl etkinleştirebilirim?

debugfs'nin etkinleştirilmesiyle ilgili ayrıntılar için intrusive downstream debug features başlıklı makaleyi inceleyin.

GKI çekirdeği ile belirli bir modül yapılandırması etkinleştirilmiş arasındaki ABI'lerin eşleşmemesi sorununu nasıl çözebilirim?

GKI çekirdeği ile modül yapılandırması arasındaki ABI'lerin eşleşmemesi, örtülü bir modül yapılandırması bağımlılığını temsil eder. Bu durumda, bir modülün etkinleştirilmesi, sonuçtaki çekirdek görüntüsüne ikili yapılandırmanın yerleştirilmesine neden olur. İlerlemek için Android çekirdek ekibiyle (kernel-team@android.com) iletişime geçin. Sembol listesi belirlendikten sonra Issue Tracker'da bir hata oluşturun ve sembol listesinde değişiklik yapın.