Çekirdek Yapılandırması

Bir Android çekirdek yapılandırması için temel olarak aşağıdaki yapılandırma ayarlarını kullanın. Ayarlar, android-base- ARCH android-base , android-base- ARCH android-base android-base- ARCH ve android-recommended için .cfg dosyaları halinde düzenlenmiştir:

  • android-base seçenekler temel Android özelliklerini etkinleştirir ve tüm cihazlar tarafından belirtildiği gibi yapılandırılmalıdır.
  • android-base- ARCH seçenekleri temel Android özelliklerini etkinleştirir ve ARCH mimarisinin tüm cihazlarında belirtildiği gibi yapılandırılmalıdır. Tüm mimariler, mimariye özgü gerekli seçeneklerden oluşan karşılık gelen bir dosyaya sahip değildir. Mimarinizin dosyası yoksa, Android için mimariye özgü ek çekirdek yapılandırma gereksinimleri yoktur.
  • android-recommended . Bu seçenekler, gelişmiş Android özelliklerini etkinleştirir ve cihazlar için isteğe bağlıdır.

Bu yapılandırma dosyaları kernel/configs deposunda bulunur. Kullandığınız çekirdeğin sürümüne karşılık gelen yapılandırma dosyaları kümesini kullanın.

Aygıtlarınızda çekirdeği güçlendirmek için halihazırda gerçekleştirilmiş olan kontrollerle ilgili ayrıntılar için bkz. Sistem ve çekirdek güvenliği . Gerekli ayarlarla ilgili ayrıntılar için Android Uyumluluk Tanımı Belgesine (CDD) bakın .

Çekirdek yapılandırması oluşturuluyor

Minimalist bir defconfig biçimine sahip aygıtlar için, seçenekleri etkinleştirmek üzere çekirdek ağacındaki merge_config.sh komut dosyasını kullanın:

ARCH=ARCH scripts/kconfig/merge_config.sh <...>/device_defconfig <...>/android-base.cfg <...>/android-base-ARCH.cfg <...>/android-recommended.cfg

Bu, yeni bir defconfig dosyasını kaydetmek veya Android özellikleri etkinleştirilmiş yeni bir çekirdek derlemek için kullanabileceğiniz bir .config dosyası oluşturur.

Ek çekirdek yapılandırma gereksinimleri

Bazı durumlarda, platform bakımcısı bir Android bağımlılığını karşılamak için birden fazla çekirdek özelliği arasından seçim yapabilir. Bu tür bağımlılıklar, çekirdek yapılandırma parçası dosyalarında (yukarıda açıklanmıştır) ifade edilemez çünkü bu dosyaların biçimi mantıksal ifadeleri desteklemez. Android 9 ve sonraki sürümlerde, Uyumluluk Test Paketi (CTS) ve Satıcı Test Paketi (VTS) aşağıdaki gereksinimlerin karşılandığını doğrular:

  • CONFIG_OF=y veya CONFIG_ACPI=y
  • 4.4 ve 4.9 çekirdeklerinde CONFIG_ANDROID_LOW_MEMORY_KILLER=y VEYA hem CONFIG_MEMCG=y hem de CONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=y veya CONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=y veya CONFIG_STRICT_MODULE_RWX=y
  • Yalnızca ARM64 için: CONFIG_ARM64_SW_TTBR0_PAN=y veya CONFIG_ARM64_PAN=y

Ek olarak, CONFIG_INET_UDP_DIAG seçeneği, Android 9 ve sonraki sürümlerde 4.9 çekirdek için y olarak ayarlanmalıdır.

USB ana bilgisayar modu seçeneklerini etkinleştirme

USB ana bilgisayar modu sesi için aşağıdaki seçenekleri etkinleştirin:

CONFIG_SND_USB=y
CONFIG_SND_USB_AUDIO=y
# CONFIG_USB_AUDIO is for a peripheral mode (gadget) driver

USB ana bilgisayar modu MIDI için aşağıdaki seçeneği etkinleştirin:

CONFIG_SND_USB_MIDI=y

TSYNC ile Seccomp BPF

Güvenli Bilgi İşlem Berkeley Paket Filtresi (Seccomp BPF), bir işlemin sistem çağrıları yapabileceği bağlamı tanımlayan sanal alanların oluşturulmasını sağlayan bir çekirdek güvenlik teknolojisidir. İş parçacığı senkronizasyonu (TSYNC) özelliği, çok iş parçacıklı programlardan Seccomp BPF'nin kullanılmasını sağlar. Bu yetenek, Seccomp desteği yukarı akışa sahip mimarilerle sınırlıdır (ARM, ARM64, x86 ve x86_64).

Android Live-Lock Daemon

Android 10, çekirdek kilitlenmelerini yakalamak ve azaltmak için tasarlanmış Android Live-Lock Daemon'u ( llkd ) içerir. llkd kullanmayla ilgili ayrıntılar için, Android Live-Lock llkd bakın.

ARM64'te vDSO32'yi kullanma

Sanal dinamik paylaşılan nesne (vDSO), doğru kullanıldığında ve yapılandırıldığında döngü maliyetlerini azaltabilen sistem çağrılarına bir alternatiftir. Android 10, 64 bit çekirdeklerde vDSO32 desteği ekler (Android halihazırda 64 bit çekirdeklerde vDSO64'ü ve 32 bit çekirdeklerde vDSO32'yi desteklemektedir). ARM64 mimarisinde vDSO32 ( CONFIG_VDSO_COMPAT ) kullanılması, pil ömründe yüzde 0,4 artış ve diğer performans iyileştirmeleri sağlar.

Linux topluluğu, vDSO'ları mimariler arasında birleştirmek için aktif olarak çalışıyor. Sen ile vDSO32 etkinleştirerek Linux çekirdeği vDSO ayarlayabilirsiniz CONFIG_COMPAT ve CONFIG_CROSS_COMPILE_COMPAT_VDSO arm32 derleyici üçlüsü ile. Piksel çekirdek (kurar size örnek bulabilirsiniz böylece Android Çekirdek ekip, Piksel cihazlara vDSO yama serisinin eski sürümlerini backported etti LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN yolu, CROSS_COMPILE_ARM32 referans ve CONFIG_CROSS_COMPILE_ARM32 yapılandırma).