Usa DebugFS en Android 12

Dispositivos que se lanzan con Android 12 mediante kernel se requiere que las versiones posteriores a 5.4 se envíen con el kernel de GKI. De esta manera, Los socios pueden acceder a DebugFS en compilaciones userdebug mientras desarrollan en GKI. la configuración del kernel CONFIG_DEBUG_FS está habilitada en la defconfig de GKI. Nunca actives DebugFS en compilaciones de usuario para dispositivos que se lanzará en Android 12.

Las compilaciones de userdebug tienen una mejor cobertura de pruebas que las compilaciones de usuario y se vuelven muy y se prueban a lo largo del ciclo de desarrollo. Con el siguiente plan, se minimiza diferencia entre los dos tipos de compilación con respecto al acceso a DebugFS ofrece los siguientes beneficios:

  • Impide que las compilaciones de userdebug dependan accidentalmente de DebugFS para nuevas funcionalidades
  • Garantiza que cualquier funcionalidad existente que no funcione por la falta de DebugFS se conoce al principio del ciclo de desarrollo

Los accesos de Debugfs en compilaciones de userdebug se clasifican como sigue:

  1. DebugFS inicializaciones de archivos durante el arranque del dispositivo, como una acceso de escritura a un archivo en DebugFS para activar la recopilación de datos de depuración
  2. Generación de informes de errores: La HAL de estado de volcado lee los archivos DebugFS cuando dumpstate invoca a DumpstateBoard(). Esta esta información se vuelve parte del informe de errores.
  3. Pruebas y validación específicas del dispositivo.

La siguiente tabla describe cómo cada una de estas tres categorías compatible con Android 12. Ten en cuenta que El siguiente código solo se aplica a compilaciones userdebug, ya que DebugFS no puede ser activa en compilaciones de usuarios.

Caso de uso Compilación userdebug de Android 12
Inicialización única de archivos DebugFS durante el inicio. Este acceso sucede una sola vez durante el tiempo de inicio. La HAL de estado de volcado realiza esto durante la inicialización de HAL. Para habilitar esta función, init activa DebugFS en compilaciones userdebug antes de que se inicialice la HAL. Init llama a umount() en DebugFS cuando que el dispositivo haya terminado de iniciarse.
Generación de informes de errores: La HAL de estado de volcado lee: Archivos DebugFS, que forman parte del informe de errores Lo realiza la HAL de dumpstate dentro de DumpstateBoard() cuando lo invoca dumpstate. (DumpstateDevice.cpp). La herramienta dumpstate (parte del framework de Android) garantiza que DebugFS activa durante la invocación.
Pruebas y validación específicas del dispositivo Shell y raíz de adb. Activa DebugFS desde el shell de adb con lo siguiente: acceso raíz1.

1 Para activar DebugFS desde adb shell con acceso raíz, usa este comando:

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

Acciones requeridas del socio

Los socios deben aplicar lo siguiente en función de estos cambios en Dispositivos con Android 12:

  • Realiza todas las inicializaciones del tiempo de inicio de DebugFS nodos durante la inicialización de HAL de dumpstate. Para ver un ejemplo de cómo hacerlo, consulta DNM: Ejemplo de la inicialización del tiempo de inicio de archivos DebugFS.
  • No permitir el acceso de DebugFS durante el tiempo de ejecución. Las siguientes excepciones se aplican las siguientes condiciones:
    • Generación del informe de errores (proviene de la HAL del estado de volcado)
    • Pruebas y validación (accesible para adb root y shell) Asegúrate de que DebugFS se active primero).

Los desarrolladores pueden configurar la propiedad persistente de depuración persist.dbg.keep_debugfs_mounted para mantener DebugFs activado Se reinicia en compilaciones userdebug y eng.

Las pruebas de cumplimiento de GTS garantizan que el sistema de archivos DebugFS no esté activa en compilaciones de usuarios. Las sentencias neverallow de sepolicy garantizan que en los dispositivos que se lancen en Android 12 o versiones posteriores, no se proporcionarán procesos no autorizados acceso a DebugFs.