Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Configuración del kernel

Utilice los siguientes ajustes de configuración como base para la configuración del kernel de Android. Los ajustes se organizan en .cfg archivos para android-base , android-base- ARCH , y android-recommended :

  • android-base opciones permiten características de Android núcleo y deben configurarse como se especifica en todos los dispositivos.
  • android-base- ARCH opciones permiten características de Android núcleo y deben configurarse como se especifica en 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 adicionales de configuración de kernel 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 kernel/configs de pases. Utilice el conjunto de archivos de configuración que corresponda a la versión del kernel que está utilizando.

Para más detalles sobre los controles ya realizados para fortalecer el núcleo en sus dispositivos, consulte Sistema y seguridad del kernel . Para más detalles sobre los ajustes necesarios, consulte la definición de documento de compatibilidad de Android (CDD) .

Generando la configuración del kernel

Para los dispositivos que tienen un minimalista defconfig formato, utilice el merge_config.sh script en el árbol del kernel para permitir opciones:

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

Esto genera un .config archivo que se puede utilizar para guardar un nuevo defconfig archivo o compilar un nuevo núcleo con Android activadas.

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. Dichas 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, prueba de compatibilidad Suite (CTS) y el proveedor de Prueba (VTS) verificar que se cumplen los siguientes requisitos:

  • CONFIG_OF=y o CONFIG_ACPI=y
  • 4.4 y 4.9 kernels tener CONFIG_ANDROID_LOW_MEMORY_KILLER=y OR tener tanto CONFIG_MEMCG=y y CONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=y o CONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=y o CONFIG_STRICT_MODULE_RWX=y
  • Para ARM64 solamente: CONFIG_ARM64_SW_TTBR0_PAN=y o CONFIG_ARM64_PAN=y

Además, el CONFIG_INET_UDP_DIAG opción se debe establecer en y para 4.9 kernels en Android 9 y superior.

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 en sentido ascendente (ARM, ARM64, x86 y x86_64).

Demonio de bloqueo en vivo de Android

Android 10 incluye el Android Live-Lock Daemon ( llkd ), que está diseñado para la captura y mitigar kernel puntos muertos. Para más detalles sobre el uso del 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). Usando vDSO32 ( CONFIG_VDSO_COMPAT ) en la arquitectura ARM64 proporciona un aumento del 0,4 por ciento en la vida de la batería y otras mejoras de rendimiento.

La comunidad de Linux está trabajando activamente en la unificación de vDSOs en todas las arquitecturas . Puede configurar vDSO en el núcleo de Linux, permitiendo vDSO32 con CONFIG_COMPAT y CONFIG_CROSS_COMPILE_COMPAT_VDSO con el triplete ARM32 compilador. 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).