O Google está comprometido em promover a equidade racial para as comunidades negras. Veja como.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Configuração do Kernel

Use as seguintes configurações como base para uma configuração do kernel do 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 ativam os principais recursos do Android e devem ser configuradas conforme especificado por todos os dispositivos.
  • android-base- ARCH opções android-base- ARCH ativam os principais recursos do Android e devem ser configuradas conforme especificado por todos os dispositivos da 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 possui um arquivo, ela não possui requisitos adicionais de configuração de kernel específicos da arquitetura para o Android.
  • android-recommended . Essas opções ativam 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 correspondem à 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 detalhes sobre as configurações necessárias, consulte o CDD (Android Compatibility Definition Document) .

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 os recursos do Android ativados.

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. Tais 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 foram atendidos:

  • CONFIG_OF=y ou CONFIG_ACPI=y
  • Os kernels 4.4 e 4.9 têm CONFIG_ANDROID_LOW_MEMORY_KILLER=y OU possuem CONFIG_MEMCG=y 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 4.9 kernels no Android 9 e superior.

Ativando as opções do modo 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 o modo USB host MIDI, ative a seguinte opção:

CONFIG_SND_USB_MIDI=y

BPF Seccomp com TSYNC

O Securecomputing Berkeley Packet Filter (Seccomp BPF) é uma tecnologia de segurança do kernel que permite a criação de caixas de proteção que definem o contexto em que um processo pode fazer chamadas ao sistema. O recurso de sincronização de thread (TSYNC) permite o uso do Seccomp BPF a partir de programas multithread. Essa capacidade é limitada às arquiteturas que oferecem suporte ao Seccomp upstream (ARM, ARM64, x86 e x86_64).

Daemon do Android Live-Lock

O Android 10 inclui o Android Live-Lock Daemon ( llkd ), projetado para capturar e atenuar os conflitos do kernel. Para detalhes sobre o uso do llkd , consulte Android Live-Lock Daemon .

Usando vDSO32 no ARM64

O objeto compartilhado dinâmico virtual (vDSO) é uma alternativa às chamadas do sistema que, quando usadas e configuradas corretamente, podem reduzir os custos de 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 do vDSO32 ( CONFIG_VDSO_COMPAT ) na arquitetura ARM64 fornece um aumento de 0,4% na vida útil da bateria e outras melhorias de desempenho.

A comunidade Linux está trabalhando ativamente na unificação de vDSOs nas arquiteturas . Você pode configurar o vDSO no kernel do Linux ativando o vDSO32 com CONFIG_COMPAT e CONFIG_CROSS_COMPILE_COMPAT_VDSO com o trigêmeo do compilador arm32. A equipe do Android Kernel suportou versões anteriores da série de patches vDSO nos dispositivos Pixel, para que você possa encontrar exemplos nas construções do kernel Pixel (caminho LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN , referência CROSS_COMPILE_ARM32 referência CONFIG_CROSS_COMPILE_ARM32 ).