Utiliser DebugFS dans Android 12

Appareils équipés d'Android 12 avec un noyau les versions supérieures à v5.4 sont nécessaires pour être livrées avec le noyau GKI. Ainsi, les partenaires peuvent accéder à DebugFS dans les builds userdebug pendant le développement sur GKI noyau, la configuration de noyau CONFIG_DEBUG_FS est activée dans defconfig GKI. N'installez jamais DebugFS dans les builds utilisateur pour les appareils. sur Android 12.

Les builds userdebug offrent une meilleure couverture de test que les versions utilisateur et sont fortement testées tout au long du cycle de développement. Le plan suivant minimise la différence entre les deux types de compilation en ce qui concerne l'accès DebugFS ; et offre les avantages suivants:

  • Empêche les builds userdebug de dépendre accidentellement de DebugFS de nouvelles fonctionnalités
  • S'assure que toute fonctionnalité existante ne fonctionne pas en l'absence de DebugFS est connu au début du cycle de développement

Les accès Debugfs dans les builds userdebug sont classés dans les catégories suivantes : ce qui suit:

  1. l'initialisation du fichier DebugFS au démarrage de l'appareil, par exemple accès en écriture à un fichier dans DebugFS pour activer la collecte des données de débogage.
  2. Génération de rapport de bug: le HAL de dumpstate lit DebugFS fichiers lorsque DumpstateBoard() est appelé par dumpstate. Ce les informations sont intégrées au rapport de bug.
  3. Tests et validation spécifiques à chaque appareil

Le tableau suivant décrit en quoi chacune de ces trois catégories est compatible avec Android 12. Notez que Les éléments suivants ne s'appliquent qu'aux builds userdebug, car DebugFS ne peut pas être installés dans des builds utilisateur.

Cas d'utilisation Version de débogage utilisateur Android 12
Initialisation unique des fichiers DebugFS, au démarrage. Cet accès n'est effectué qu'une seule fois au démarrage. L'HAL de vidage effectue cette opération lors de l'initialisation du HAL. Pour activer ces mêmes éléments, init installe DebugFS dans les builds userdebug avant l'initialisation du HAL. Init appelle umount() sur DebugFS lorsque l'appareil a terminé le démarrage.
Génération de rapport de bug: la fonction HAL de dumpstate lit Fichiers DebugFS, qui feront partie du rapport de bug. Terminée par la couche de protection HAL dans DumpstateBoard() en cas d'appel par dumpstate (DumpstateDevice.cpp). L'outil dumpstate (qui fait partie du framework Android) garantit que DebugFS lors de l'appel.
Tests et validations spécifiques à l'appareil Racine et shell ADB. Installez DebugFS à partir de l'interface système adb avec un accès root1.

1 Pour installer DebugFS à partir de adb shell avec l'accès root, utilisez la commande suivante:

adb shell mount -t debugfs debugfs /sys/kernel/debug.

Actions requises du partenaire

Les partenaires doivent adopter les mesures suivantes suite à ces modifications dans Appareils Android 12:

  • Effectuer toutes les initialisations du temps de démarrage de DebugFS nœuds pendant l'initialisation de la couche HAL de dumpstate. Pour savoir comment procéder, consultez un exemple DNM: Exemple d'initialisation au démarrage de fichiers DebugFS
  • N'autorisez pas l'accès à DebugFS pendant l'exécution. Les exceptions suivantes appliquer: <ph type="x-smartling-placeholder">
      </ph>
    • Génération d'un rapport de bug (provenant du HAL de l'état de vidage)
    • Tests et validation (accessibles par adb root et shell) - Assurez-vous d'abord que DebugFS est installé.)

Les développeurs peuvent définir la propriété persistante de débogage persist.dbg.keep_debugfs_mounted pour que DebugFs reste installé redémarre lors des builds userdebug et eng.

Les tests de conformité GTS garantissent que le système de fichiers DebugFS n'est pas installés dans des builds utilisateur. Les instructions de règles neverallow permettent de s'assurer sur Android 12 ou version ultérieure, les processus non autorisés ne sont pas fournis l'accès à DebugFs.