Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configuration du noyau

Utilisez les paramètres de configuration suivants comme base pour une configuration de noyau Android. Les paramètres sont organisés en fichiers .cfg pour android-base , android-base- ARCH et android-recommended :

  • android-base options android-base activent les fonctionnalités Android principales et doivent être configurées comme spécifié par tous les appareils.
  • android-base- ARCH options android-base- ARCH activent les fonctionnalités principales d'Android et doivent être configurées comme spécifié par tous les appareils de l'architecture ARCH . Toutes les architectures n'ont pas un fichier correspondant d'options requises spécifiques à l'architecture. Si votre architecture n'a pas de fichier, elle n'a pas d'exigences supplémentaires de configuration de noyau spécifiques à l'architecture pour Android.
  • android-recommended . Ces options activent les fonctionnalités avancées d'Android et sont facultatives pour les appareils.

Ces fichiers de configuration se trouvent dans le repo kernel/configs . Utilisez l'ensemble de fichiers de configuration correspondant à la version du noyau que vous utilisez.

Pour plus de détails sur les contrôles déjà entrepris pour renforcer le noyau sur vos appareils, consultez Sécurité du système et du noyau . Pour plus de détails sur les paramètres requis, consultez le document de définition de compatibilité Android (CDD) .

Génération de la configuration du noyau

Pour les périphériques qui ont un format defconfig minimaliste, utilisez le script merge_config.sh dans l'arborescence du noyau pour activer les options:

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

Cela génère un fichier .config que vous pouvez utiliser pour enregistrer un nouveau fichier defconfig ou compiler un nouveau noyau avec les fonctionnalités Android activées.

Exigences supplémentaires de configuration du noyau

Dans certains cas, le responsable de la plate-forme peut choisir parmi plusieurs fonctionnalités du noyau pour satisfaire une dépendance Android. De telles dépendances ne peuvent pas être exprimées dans les fichiers de fragments de configuration du noyau (décrits ci-dessus) car le format de ces fichiers ne prend pas en charge les expressions logiques. Sous Android 9 et supérieur, la suite de tests de compatibilité (CTS) et la suite de tests du fournisseur (VTS) vérifient que les exigences suivantes sont satisfaites:

  • CONFIG_OF=y ou CONFIG_ACPI=y
  • Les noyaux 4.4 et 4.9 ont CONFIG_ANDROID_LOW_MEMORY_KILLER=y OU ont à la fois CONFIG_MEMCG=y et 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
  • Pour ARM64 uniquement: CONFIG_ARM64_SW_TTBR0_PAN=y ou CONFIG_ARM64_PAN=y

De plus, l'option CONFIG_INET_UDP_DIAG doit être définie sur y pour les noyaux 4.9 sous Android 9 et supérieur.

Activation des options du mode hôte USB

Pour l'audio en mode hôte USB, activez les options suivantes:

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

Pour le MIDI en mode hôte USB, activez l'option suivante:

CONFIG_SND_USB_MIDI=y

Seccomp BPF avec TSYNC

Secure Computing Berkeley Packet Filter (Seccomp BPF) est une technologie de sécurité du noyau qui permet la création de sandbox qui définissent le contexte dans lequel un processus peut effectuer des appels système. La fonction de synchronisation des threads (TSYNC) permet l'utilisation de Seccomp BPF à partir de programmes multithread. Cette capacité est limitée aux architectures prenant en charge Seccomp en amont (ARM, ARM64, x86 et x86_64).

Démon Android Live-Lock

Android 10 inclut le démon Android Live-Lock ( llkd ), conçu pour llkd et atténuer les blocages du noyau. Pour plus de détails sur l'utilisation du llkd , reportez-vous au démon Android Live-Lock .

Utilisation de vDSO32 sur ARM64

L'objet partagé dynamique virtuel (vDSO) est une alternative aux appels système qui, lorsqu'il est utilisé et configuré correctement, peut réduire les coûts de cycle. Android 10 ajoute la prise en charge de vDSO32 sur les noyaux 64 bits (Android prend déjà en charge vDSO64 sur les noyaux 64 bits et vDSO32 sur les noyaux 32 bits). L'utilisation de vDSO32 ( CONFIG_VDSO_COMPAT ) sur l'architecture ARM64 offre une augmentation de 0,4% de la durée de vie de la batterie et d'autres améliorations de performances.

La communauté Linux travaille activement à l' unification des vDSO à travers les architectures . Vous pouvez configurer vDSO dans votre noyau Linux en activant vDSO32 avec CONFIG_COMPAT et CONFIG_CROSS_COMPILE_COMPAT_VDSO avec le triplet de compilateur arm32. L'équipe Kernel Android a rétroportés les anciennes versions de la série de patch vDSO dans des dispositifs pixels, de sorte que vous pouvez trouver des exemples dans le noyau Pixel construit ( LINUX_FCC_CROSS_COMPILE_ARM32_PREBUILTS_BIN chemin, CROSS_COMPILE_ARM32 référence et CONFIG_CROSS_COMPILE_ARM32 config).