O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Configuração do Kernel

Use as seguintes definições de configuração como base para uma configuração de kernel Android. As configurações são organizadas em .cfg arquivos para android-base , android-base- ARCH , e android-recommended :

  • android-base opções permitir características Android núcleo e deve ser configurado como especificado por todos os dispositivos.
  • android-base- ARCH opções habilitar recursos Android núcleo e deve ser configurado conforme especificado por todos os dispositivos de arquitectura ARCH . Nem todas as arquiteturas têm um arquivo correspondente de opções necessárias específicas da arquitetura. Se sua arquitetura não tiver um arquivo, ela não terá requisitos adicionais de configuração de kernel específicos da arquitetura para Android.
  • android-recommended . Essas opções habilitam recursos avançados do Android e são opcionais para dispositivos.

Estes arquivos de configuração estão localizados no kernel/configs repo. Use o conjunto de arquivos de configuração que corresponde à versão do kernel que você está usando.

Para mais detalhes sobre os controles já realizados para fortalecer o kernel em seus dispositivos, consulte Sistema e segurança do kernel . Para obter detalhes sobre as configurações necessárias, consulte o documento Definição de Compatibilidade Android (CDD) .

Gerando configuração do kernel

Para dispositivos que têm um minimalista defconfig formato, use o merge_config.sh script na árvore do kernel para permitir opções:

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

Isso gera um .config arquivo que você pode usar para salvar um novo defconfig arquivo ou compilar um novo kernel com Android funcionalidades ativadas.

Requisitos adicionais de configuração do kernel

Em alguns casos, o mantenedor da plataforma pode escolher entre vários recursos do kernel para satisfazer uma dependência do Android. Essas dependências não podem ser expressas nos arquivos de fragmento de configuração do kernel (descritos acima) porque o formato desses arquivos não oferece suporte a expressões lógicas. Em Android 9 e superior, Compatibility Test Suite (CTS) e Vendor Test Suite (VTS) verifique se os seguintes requisitos forem cumpridos:

  • CONFIG_OF=y ou CONFIG_ACPI=y
  • 4.4 e 4.9 têm os kernels CONFIG_ANDROID_LOW_MEMORY_KILLER=y OU têm ambos CONFIG_MEMCG=y e CONFIG_MEMCG_SWAP=y
  • CONFIG_DEBUG_RODATA=y ou CONFIG_STRICT_KERNEL_RWX=y
  • CONFIG_DEBUG_SET_MODULE_RONX=y ou CONFIG_STRICT_MODULE_RWX=y
  • Para ARM64 apenas: CONFIG_ARM64_SW_TTBR0_PAN=y ou CONFIG_ARM64_PAN=y

Além disso, o CONFIG_INET_UDP_DIAG opção deve ser definido para y por 4,9 grãos em Android 9 e superior.

Ativando opções de modo de host USB

Para áudio no modo host USB, ative as seguintes opções:

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

Para MIDI no modo host USB, ative a seguinte opção:

CONFIG_SND_USB_MIDI=y

Seccomp BPF com TSYNC

Secure Computing Berkeley Packet Filter (Seccomp BPF) é uma tecnologia de segurança de kernel que permite a criação de sandboxes que definem o contexto no qual um processo pode fazer chamadas de sistema. O recurso de sincronização de thread (TSYNC) permite o uso de Seccomp BPF de programas multithread. Essa capacidade é limitada a arquiteturas que têm suporte para upstream de Seccomp (ARM, ARM64, x86 e x86_64).

Android Live-Lock Daemon

Android 10 inclui o Android Vivo-Lock Daemon ( llkd ), que é projetado para captura e mitigar kernel do impasses. Para mais detalhes sobre a utilização do llkd , consulte Android Vivo-Lock Daemon .

Usando vDSO32 em ARM64

O objeto compartilhado dinâmico virtual (vDSO) é uma alternativa às chamadas do sistema que, quando usadas e configuradas corretamente, podem reduzir os custos do ciclo. O Android 10 adiciona suporte para vDSO32 em kernels de 64 bits (o Android já oferece suporte a vDSO64 em kernels de 64 bits e vDSO32 em kernels de 32 bits). Usando vDSO32 ( CONFIG_VDSO_COMPAT ) na arquitetura ARM64 fornece um aumento de 0,4 por cento em vida útil da bateria e outras melhorias de desempenho.

A comunidade Linux está trabalhando ativamente em unificar vDSOs através arquiteturas . Você pode configurar vDSO em seu kernel Linux, permitindo vDSO32 com CONFIG_COMPAT e CONFIG_CROSS_COMPILE_COMPAT_VDSO com o trio compilador ARM32. A equipe de Kernel Android foi backported versões mais antigas da série remendo vDSO em dispositivos de pixel, para que possa encontrar exemplos em Pixel construções do kernel ( LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN caminho, CROSS_COMPILE_ARM32 referência e CONFIG_CROSS_COMPILE_ARM32 config).