O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

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 arquivos .cfg para android-base , android-base- ARCH e android-recommended :

  • android-base opções da android-base Android ativam os principais recursos do Android e devem ser configuradas conforme especificado por todos os dispositivos.
  • android-base- ARCH opções de android-base- ARCH ativam os principais recursos do Android e devem ser configuradas conforme especificado por todos os dispositivos de arquitetura 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.

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

Para obter detalhes sobre os controles já realizados para fortalecer o kernel em seus dispositivos, consulte Segurança do sistema e do kernel . Para obter detalhes sobre as configurações necessárias, consulte o Android Compatibility Definition Document (CDD) .

Gerando configuração do kernel

Para dispositivos que possuem um formato defconfig minimalista, use o script merge_config.sh na árvore do kernel para ativar as opções:

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

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

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 suporta expressões lógicas. No Android 9 e superior, o Compatibility Test Suite (CTS) e o Vendor Test Suite (VTS) verificam se os seguintes requisitos são atendidos:

  • CONFIG_OF=y ou CONFIG_ACPI=y
  • Kernels 4.4 e 4.9 têm CONFIG_ANDROID_LOW_MEMORY_KILLER=y OU têm 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
  • Apenas para ARM64: CONFIG_ARM64_SW_TTBR0_PAN=y ou CONFIG_ARM64_PAN=y

Além disso, a opção CONFIG_INET_UDP_DIAG deve ser definida como y para kernels 4,9 no 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 do 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

O Android 10 inclui o Android Live-Lock Daemon ( llkd ), que é projetado para capturar e mitigar deadlocks do kernel. Para obter detalhes sobre como usar o llkd , consulte Android Live-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á suporta vDSO64 em kernels de 64 bits e vDSO32 em kernels de 32 bits). O uso de vDSO32 ( CONFIG_VDSO_COMPAT ) na arquitetura ARM64 fornece um aumento de 0,4 por cento na vida útil da bateria e outras melhorias de desempenho.

A comunidade Linux está trabalhando ativamente na unificação de vDSOs entre arquiteturas . Você pode configurar o vDSO no kernel do Linux habilitando o vDSO32 com CONFIG_COMPAT e CONFIG_CROSS_COMPILE_COMPAT_VDSO com o tripleto do compilador arm32. A equipe do Android Kernel fez backport de versões anteriores da série de patch vDSO para dispositivos Pixel, para que você possa encontrar exemplos em compilações de kernel do Pixel (caminho LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN , referência CROSS_COMPILE_ARM32 e configuração CONFIG_CROSS_COMPILE_ARM32 ).