Google si impegna a promuovere l'equità razziale per le comunità nere. Vedi come.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Configurazione del kernel

Utilizzare le seguenti impostazioni di configurazione come base per una configurazione del kernel Android. Le impostazioni sono organizzate in file .cfg per android-base , android-base- ARCH e android-recommended :

  • android-base opzioni android-base abilitano le funzionalità Android di base e devono essere configurate come specificato da tutti i dispositivi.
  • android-base- ARCH opzioni android-base- ARCH abilitano le funzionalità Android di base e devono essere configurate come specificato da tutti i dispositivi dell'architettura ARCH . Non tutte le architetture hanno un file corrispondente di opzioni richieste specifiche dell'architettura. Se la tua architettura non ha un file, non ha requisiti di configurazione del kernel specifici dell'architettura per Android.
  • android-recommended . Queste opzioni abilitano funzionalità Android avanzate e sono opzionali per i dispositivi.

Questi file di configurazione si trovano nel repository kernel/configs . Utilizzare il set di file di configurazione che corrisponde alla versione del kernel che si sta utilizzando.

Per i dettagli sui controlli già effettuati per rafforzare il kernel sui tuoi dispositivi, vedi Sicurezza del sistema e del kernel . Per i dettagli sulle impostazioni richieste, consultare il Documento di definizione della compatibilità Android (CDD) .

Generazione della configurazione del kernel

Per i dispositivi che hanno un formato defconfig minimalista, utilizzare lo script merge_config.sh nella struttura del kernel per abilitare le opzioni:

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

Questo genera un file .config che puoi usare per salvare un nuovo file defconfig o compilare un nuovo kernel con le funzionalità Android abilitate.

Requisiti di configurazione del kernel aggiuntivi

In alcuni casi, il manutentore della piattaforma può scegliere tra più funzionalità del kernel per soddisfare una dipendenza Android. Tali dipendenze non possono essere espresse nei file di frammenti di configurazione del kernel (descritti sopra) perché il formato di tali file non supporta le espressioni logiche. In Android 9 e versioni successive, Compatibility Test Suite (CTS) e Vendor Test Suite (VTS) verificano che i seguenti requisiti siano soddisfatti:

  • CONFIG_OF=y o CONFIG_ACPI=y
  • 4,4 e 4,9 kernel avere CONFIG_ANDROID_LOW_MEMORY_KILLER=y O avere sia CONFIG_MEMCG=y e CONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=y oppure CONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=y oppure CONFIG_STRICT_MODULE_RWX=y
  • Solo per ARM64: CONFIG_ARM64_SW_TTBR0_PAN=y oppure CONFIG_ARM64_PAN=y

Inoltre, l'opzione CONFIG_INET_UDP_DIAG deve essere impostata su y per i kernel 4.9 in Android 9 e versioni successive.

Abilitazione delle opzioni della modalità host USB

Per l'audio in modalità host USB, abilitare le seguenti opzioni:

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

Per la modalità host USB MIDI, abilitare la seguente opzione:

CONFIG_SND_USB_MIDI=y

Seccomp BPF con TSYNC

Secure Computing Berkeley Packet Filter (Seccomp BPF) è una tecnologia di sicurezza del kernel che consente la creazione di sandbox che definiscono il contesto in cui un processo può effettuare chiamate di sistema. La funzione di sincronizzazione dei thread (TSYNC) consente l'uso di Seccomp BPF da programmi multithread. Questa capacità è limitata alle architetture che supportano Seccomp a monte (ARM, ARM64, x86 e x86_64).

Demone Android Live-Lock

Android 10 include Android Live-Lock Daemon ( llkd ), progettato per catturare e mitigare i deadlock del kernel. Per i dettagli sull'uso di llkd , fare riferimento a Demone Android Live-Lock .

Utilizzo di vDSO32 su ARM64

L'oggetto virtuale dinamico condiviso (vDSO) è un'alternativa alle chiamate di sistema che, se utilizzato e configurato correttamente, può ridurre i costi del ciclo. Android 10 aggiunge il supporto per vDSO32 su kernel a 64 bit (Android supporta già vDSO64 su kernel a 64 bit e vDSO32 su kernel a 32 bit). L'uso di vDSO32 ( CONFIG_VDSO_COMPAT ) sull'architettura ARM64 fornisce un aumento dello 0,4 per cento della durata della batteria e altri miglioramenti delle prestazioni.

La comunità Linux sta lavorando attivamente all'unificazione dei vDSO tra architetture . È possibile impostare vDSO nel kernel Linux abilitando vDSO32 con CONFIG_COMPAT e CONFIG_CROSS_COMPILE_COMPAT_VDSO con la terzina di compilatore arm32. Il team del kernel Android ha backported versioni precedenti della serie di patch vDSO in dispositivi Pixel, in modo da poter trovare esempi pixel kernel compilati ( LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN percorso, CROSS_COMPILE_ARM32 di riferimento, e CONFIG_CROSS_COMPILE_ARM32 config).