Utilizzare DebugFS in Android 12

Dispositivi che vengono avviati con Android 12 utilizzando il kernel versioni successive alla v5.4 devono essere fornite con il kernel GKI. Perciò I partner possono accedere a DebugFS nelle build di userdebug mentre sviluppano su GKI la configurazione del kernel CONFIG_DEBUG_FS è abilitata nel defconfig GKI. Non montare mai DebugFS nelle build degli utenti per i dispositivi verrà lanciato su Android 12.

Le build di debug dell'utente hanno una copertura di test migliore rispetto alle build dell'utente e comportano un aumento significativo testati durante tutto il ciclo di sviluppo. Il piano seguente riduce al minimo la differenza tra i due tipi di build per quanto riguarda l'accesso DebugFS, e offre i seguenti vantaggi:

  • Impedisce l'esecuzione accidentale delle build di debug dell'utente a seconda di DebugFS per ottenere nuove funzionalità
  • Assicura che tutte le funzionalità esistenti non funzionanti per mancanza di DebugFS è nota nelle prime fasi del ciclo di sviluppo

Gli accessi a debugfs nelle build di userdebug sono classificati come che segue:

  1. DebugFS inizializzazioni dei file durante l'avvio del dispositivo, ad esempio una accesso in scrittura a un file in DebugFS per attivare la raccolta dei dati di debug.
  2. Generazione del report di bug: l'HAL dello stato di dump legge DebugFS file quando DumpstateBoard() è richiamato da dumpstate. Questo le informazioni diventano parte della segnalazione di bug.
  3. Test e convalida specifici per i dispositivi.

La tabella seguente descrive in che modo ciascuna di queste tre categorie viene supportata in Android 12. Tieni presente che che segue si applica solo alle build di debug dell'utente poiché DebugFS non può essere montate nelle build dell'utente.

Caso d'uso Build debug utente Android 12
Inizializzazione una tantum dei file DebugFS, durante l'avvio. Questo accesso viene verificato una sola volta durante l'avvio. Il dumpstate HAL esegue questa operazione durante l'inizializzazione dell'HAL. Per attivarla, init monta DebugFS nelle build userdebug prima dell'inizializzazione dell'HAL. Init chiama umount() su DebugFS quando il dispositivo ha completato l'avvio.
Generazione del report di bug: l'HAL dumpstate legge DebugFS, che diventano parte della segnalazione di bug. Completato dall'HAL dumpstate entro DumpstateBoard() quando richiamato da dumpstate (DumpstateDevice.cpp). Lo strumento dumpstate (parte del framework Android) garantisce che DebugFS monta durante la chiamata.
Test e convalida specifici per dispositivo Radice e shell ADB. Monta DebugFS dalla shell ADB con accesso root.1

1Per montare DebugFS da adb shell con l'accesso root, utilizza questo comando:

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

Azioni richieste dal partner

I Partner devono adottare le seguenti misure in base a queste modifiche nei Dispositivi Android 12:

  • Esegui tutte le inizializzazioni in fase di avvio di DebugFS nodi durante l'inizializzazione dell'HAL dumpstate. Per un esempio di come fare, consulta DNM: Esempio per l'inizializzazione del tempo di avvio di DebugFS file.
  • Non consentire l'accesso a DebugFS durante il runtime. Le seguenti eccezioni fai domanda:
    • Generazione di report di bug (proviene dall'HAL dello stato di dump)
    • Test e convalida (accessibile da adb root e shell - assicurati che DebugFS sia montato per primo)

Gli sviluppatori possono impostare la proprietà permanente di debug persist.dbg.keep_debugfs_mounted per mantenere DebugFs montata tra su build di userdebug ed eng.

I test di conformità GTS assicurano che il file system DebugFS montate nelle build dell'utente. Le istruzioni Sepolicy neverallow assicurano che nei dispositivi al lancio su Android 12 o versioni successive, non vengono forniti processi non autorizzati accesso a DebugFs.