Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Configuración del kernel

Utilice los siguientes ajustes de configuración como base para la configuración del kernel de Android. Las configuraciones están organizadas en archivos .cfg para android-base , android-base- ARCH y android-recommended :

  • android-base opciones basadas en Android habilitan las funciones principales de Android y deben configurarse según lo especificado por todos los dispositivos.
  • android-base- ARCH opciones de android-base- ARCH habilitan las funciones principales de Android y deben configurarse según lo especificado por todos los dispositivos de la arquitectura ARCH . No todas las arquitecturas tienen un archivo correspondiente de opciones requeridas específicas de la arquitectura. Si su arquitectura no tiene un archivo, no tiene requisitos de configuración de kernel adicionales específicos de la arquitectura para Android.
  • android-recommended . Estas opciones habilitan funciones avanzadas de Android y son opcionales para los dispositivos.

Estos archivos de configuración se encuentran en el repositorio kernel/configs . Utilice el conjunto de archivos de configuración que corresponda a la versión del kernel que está utilizando.

Para obtener detalles sobre los controles ya realizados para fortalecer el kernel en sus dispositivos, consulte Seguridad del sistema y del kernel . Para obtener detalles sobre la configuración requerida, consulte el Documento de definición de compatibilidad de Android (CDD) .

Generando la configuración del kernel

Para dispositivos que tienen un formato defconfig minimalista, use el script merge_config.sh en el árbol del kernel para habilitar las opciones:

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

Esto genera un archivo .config que puede usar para guardar un nuevo archivo defconfig o compilar un nuevo kernel con las funciones de Android habilitadas.

Requisitos adicionales de configuración del kernel

En algunos casos, el responsable de la plataforma puede elegir entre varias funciones del kernel para satisfacer una dependencia de Android. Tales dependencias no se pueden expresar en los archivos de fragmentos de configuración del kernel (descritos anteriormente) porque el formato de esos archivos no admite expresiones lógicas. En Android 9 y superior, Compatibility Test Suite (CTS) y Vendor Test Suite (VTS) verifican que se cumplan los siguientes requisitos:

  • CONFIG_OF=y CONFIG_ACPI=y
  • Los núcleos 4.4 y 4.9 tienen CONFIG_ANDROID_LOW_MEMORY_KILLER=y O tienen CONFIG_MEMCG=y y CONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=y CONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=y CONFIG_STRICT_MODULE_RWX=y
  • Solo para ARM64: CONFIG_ARM64_SW_TTBR0_PAN=y CONFIG_ARM64_PAN=y

Además, la opción CONFIG_INET_UDP_DIAG debe configurarse en y para los núcleos 4.9 en Android 9 y CONFIG_INET_UDP_DIAG posteriores.

Habilitación de las opciones del modo de host USB

Para audio en modo host USB, habilite las siguientes opciones:

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

Para MIDI en modo host USB, habilite la siguiente opción:

CONFIG_SND_USB_MIDI=y

Seccomp BPF con TSYNC

Secure Computing Berkeley Packet Filter (Seccomp BPF) es una tecnología de seguridad del kernel que permite la creación de entornos sandbox que definen el contexto en el que un proceso puede realizar llamadas al sistema. La función de sincronización de subprocesos (TSYNC) permite el uso de Seccomp BPF desde programas multiproceso. Esta capacidad está limitada a arquitecturas que tienen soporte Seccomp upstream (ARM, ARM64, x86 y x86_64).

Daemon de bloqueo en vivo de Android

Android 10 incluye Android Live-Lock Daemon ( llkd ), que está diseñado para detectar y mitigar los puntos muertos del kernel. Para obtener detalles sobre el uso de llkd , consulte Android Live-Lock Daemon .

Usando vDSO32 en ARM64

El objeto compartido dinámico virtual (vDSO) es una alternativa a las llamadas al sistema que, cuando se usa y configura correctamente, puede reducir los costos de ciclo. Android 10 agrega soporte para vDSO32 en kernels de 64 bits (Android ya es compatible con vDSO64 en kernels de 64 bits y vDSO32 en kernels de 32 bits). El uso de vDSO32 ( CONFIG_VDSO_COMPAT ) en la arquitectura ARM64 proporciona un aumento del 0,4 por ciento en la duración de la batería y otras mejoras de rendimiento.

La comunidad de Linux está trabajando activamente para unificar vDSO en todas las arquitecturas . Puede configurar vDSO en su kernel de Linux habilitando vDSO32 con CONFIG_COMPAT y CONFIG_CROSS_COMPILE_COMPAT_VDSO con el triplete del compilador arm32. El equipo de Android kernel ha portado versiones anteriores de la serie de parches vDSO en dispositivos de píxeles, por lo que se pueden encontrar ejemplos en Pixel kernels construídos ( LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN ruta, CROSS_COMPILE_ARM32 de referencia, y CONFIG_CROSS_COMPILE_ARM32 config).