Usar o DebugFS no Android 12

Dispositivos lançados com o Android 12 usando o kernel as versões mais recentes que a v5.4 precisam ser enviadas com o kernel de GKI. Assim, os parceiros podem acessar DebugFS em builds userdebug durante o desenvolvimento na GKI. a configuração CONFIG_DEBUG_FS do kernel é ativada no defconfig de GKI. Nunca montar DebugFS em builds do usuário para dispositivos lançamento no Android 12.

Os builds Userdebug têm uma cobertura de teste melhor do que os builds de usuário e obtêm uma e testada durante todo o ciclo de desenvolvimento. O plano a seguir minimiza o diferença entre os dois tipos de build em relação ao acesso a DebugFS oferece estes benefícios:

  • Evita que os builds do userdebug dependam acidentalmente de DebugFS. para conhecer novas funcionalidades
  • Garante que qualquer funcionalidade existente seja corrompida pela falta do DebugFS é conhecida no início do ciclo de desenvolvimento

Os acessos de Debugfs em builds userdebug são categorizados como da seguinte forma:

  1. inicializações de arquivo DebugFS durante a inicialização do dispositivo, como acesso de gravação a um arquivo em DebugFS para ativar a coleta de dados de depuração.
  2. Geração de relatórios de bugs: a HAL de dumpstate lê arquivos DebugFS quando DumpstateBoard() é invocado por dumpstate. Isso se torna parte do relatório do bug.
  3. Teste e validação específicos do dispositivo.

A tabela a seguir descreve como cada uma dessas três categorias é com suporte no Android 12. Observe que o a seguir só se aplica a builds userdebug, já que DebugFS não pode ser montados em builds do usuário.

Caso de uso Build userdebug do Android 12
Inicialização única de arquivos DebugFS durante a inicialização. Esse acesso acontece apenas uma vez durante o tempo de inicialização. A HAL Dumpstate faz isso durante a inicialização da HAL. Para ativar os mesmos, O init monta DebugFS em builds userdebug antes da inicialização da HAL. Init chama umount() em DebugFS quando que o dispositivo tenha concluído a inicialização.
Geração de relatórios de bugs: a HAL de dumpstate lê. Arquivos DebugFS, que se tornam parte do relatório do bug. Concluído pela HAL de dumpstate dentro de DumpstateBoard() quando invocada pelo dumpstate (DumpstateDevice.cpp). A ferramenta dumpstate, parte do framework do Android, garante que DebugFS. é ativado durante a invocação.
Teste e validação específicos do dispositivo Raiz Adb e shell. Ative DebugFS pelo shell do adb com acesso raiz1.

1Para montar DebugFS de adb shell com acesso root, use este comando:

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

Ações necessárias do parceiro

Os parceiros precisam tomar as seguintes medidas com base nessas mudanças em Dispositivos Android 12:

  • Fazer com que todas as inicializações do tempo de inicialização dos nós DebugFS aconteçam durante a inicialização da HAL de dumpstate. Para ver um exemplo de como fazer isso, consulte Não relevante: Exemplo de inicialização do tempo de inicialização de arquivos DebugFS.
  • Não permitir o acesso do DebugFS durante o tempo de execução. As seguintes exceções aplicar:
    • Geração de relatórios de bugs (vem da HAL dumpstate)
    • Teste e validação (acessível por adb root e shell) - verifique se o DebugFS foi ativado primeiro)

Os desenvolvedores podem definir a propriedade de depuração permanente persist.dbg.keep_debugfs_mounted para manter o DebugFs montado na é reinicializado em builds userdebug e eng.

Os testes de conformidade com o GTS garantem que o sistema de arquivos DebugFS não esteja montados em builds do usuário. As instruções neverallow de política garantem que, nos dispositivos, for lançado no Android 12 ou versões mais recentes, processos não autorizados não são fornecidos acesso a DebugFs.