Los dispositivos que se inician con Android 12 y utilizan versiones de kernel superiores a la v5.4 deben enviarse con el kernel GKI. Para que los socios puedan acceder DebugFS
en compilaciones de depuración de usuario mientras desarrollan en el kernel de GKI, la configuración del kernel CONFIG_DEBUG_FS
está habilitada en GKI defconfig. Nunca monte DebugFS
en compilaciones de usuarios para dispositivos que se inician con Android 12.
Las compilaciones de Userdebug tienen una mejor cobertura de prueba que las compilaciones de usuarios y se prueban exhaustivamente durante todo el ciclo de desarrollo. El siguiente plan minimiza la diferencia entre los dos tipos de compilación con respecto al acceso DebugFS
y proporciona estos beneficios:
- Evita que las compilaciones de userdebug dependan accidentalmente de
DebugFS
para obtener nuevas funciones - Garantiza que cualquier funcionalidad existente que esté interrumpida por la falta de DebugFS se conozca al principio del ciclo de desarrollo.
Los accesos a Debugfs en compilaciones de userdebug se clasifican de la siguiente manera:
- Inicializaciones de archivos
DebugFS
durante el arranque del dispositivo, como un acceso de escritura a un archivo enDebugFS
para activar la recopilación de datos de depuración. - Generación de informes de errores: dumpstate HAL lee archivos
DebugFS
cuandodumpstate
invocaDumpstateBoard()
. Esta información pasa a formar parte del informe de error. - Pruebas y validación específicas del dispositivo.
La siguiente tabla describe cómo se admite cada una de estas tres categorías en Android 12. Tenga en cuenta que lo siguiente solo se aplica a las compilaciones de usuario, ya que DebugFS
no se puede montar en compilaciones de usuario.
Caso de uso | Compilación de depuración de usuario de Android 12 |
---|---|
Inicialización única de archivos DebugFS , durante el inicio . Este acceso ocurre sólo una vez durante el arranque. | Dumpstate HAL realiza esto durante la inicialización de HAL. Para habilitar lo mismo, init monta DebugFS en compilaciones de userdebug antes de que se inicialice HAL. Init llama umount() en DebugFS cuando el dispositivo ha completado el inicio. |
Generación de informes de errores : el HAL dumpstate lee los archivos DebugFS , que pasan a formar parte del informe de errores. | Realizado por dumpstate HAL dentro de DumpstateBoard() cuando lo invoca dumpstate ( DumpstateDevice.cpp ). La herramienta dumpstate (parte del marco de Android) garantiza que DebugFS se monte durante la invocación. |
Pruebas y validación específicas del dispositivo | Raíz y shell de Adb. Monte DebugFS desde adb shell con acceso de root 1 . |
1 Para montar DebugFS
desde adb shell
con acceso root, use este comando:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Acciones requeridas del socio
Los socios deben implementar lo siguiente según estos cambios en los dispositivos con Android 12:
- Haga que todas las inicializaciones de tiempo de arranque de los nodos
DebugFS
ocurran durante la inicialización de HAL del estado de volcado. Para ver un ejemplo de cómo hacer esto, consulte DNM: Ejemplo de inicialización en tiempo de arranque de archivosDebugFS
. - No permita el acceso
DebugFS
durante el tiempo de ejecución. Se aplican las siguientes excepciones:- Generación de informes de errores (proviene del estado de volcado HAL)
- Pruebas y validación (accesibles mediante
adb root
yshell
; asegúrese de que DebugFS esté montado primero)
Los desarrolladores pueden configurar la propiedad persistente de depuración persist.dbg.keep_debugfs_mounted
para mantener DebugFs
montado durante los reinicios en las compilaciones userdebug y eng.
Las pruebas de cumplimiento de GTS garantizan que el sistema de archivos DebugFS
no esté montado en compilaciones de usuarios. Las declaraciones neverallow
de Sepolicy garantizan que en los dispositivos que se inician con Android 12 o superior, los procesos no autorizados no tengan acceso a DebugFs
.