Fluxo de inicialização

O fluxo de inicialização recomendado para um dispositivo é o seguinte:

Fluxo de inicialização verificada

Figura 1. Fluxo de inicialização verificada.

Fluxo para dispositivos A/B

Se o dispositivo estiver usando A/B, o fluxo de inicialização será um pouco diferente. O slot de inicialização precisa ser marcado como SUCCESSFUL usando o HAL de controle de inicialização antes de atualizar os metadados da proteção contra reversão.

Se houver uma falha na atualização da plataforma (não marcada como SUCCESSFUL), a pilha A/B vai voltar para o outro slot, que ainda tem a versão anterior do Android. No entanto, se os metadados de proteção contra reversão tiverem sido definidos, a versão anterior não poderá ser inicializada devido à proteção contra reversão.

Comunicar o estado da Inicialização verificada aos usuários

Depois de determinar o estado de inicialização de um dispositivo, é necessário comunicar esse estado ao usuário. Se o dispositivo não tiver problemas, prossiga sem mostrar nada. Os problemas de inicialização verificada se enquadram nestas categorias:

  • AMARELO: tela de aviso para dispositivos BLOQUEADOS com raiz de confiança personalizada definida
  • LARANJA: tela de aviso para dispositivos DESBLOQUEADOS
  • RED (eio): tela de aviso para corrupção de dm-verity
  • VERMELHO (não foi encontrado SO): nenhum SO válido encontrado

Dispositivos BLOQUEADOS com raiz de confiança personalizada

Exemplo de tela AMARELA:

Tela de aviso amarelo do dispositivo

Mostre uma tela AMARELA em cada inicialização se o dispositivo estiver BLOQUEADO, uma raiz de confiança personalizada tiver sido definida e a imagem tiver sido assinada com essa raiz de confiança personalizada. A tela AMARELA é dispensada após dez segundos, e o dispositivo continua iniciando. Se o usuário pressionar o botão liga/desliga, o texto "Pressione o botão liga/desliga para pausar" vai mudar para "Pressione o botão liga/desliga para continuar", e a tela nunca será dispensada, embora o dispositivo possa escurecer ou desligar a tela para se proteger contra queima. Se pressionar novamente, a tela será dispensada e o smartphone continuará a inicialização.

Para hex-number, use os primeiros 8 dígitos do sha256 da representação libavb da chave pública usada para verificação, por exemplo, d14a028c.

Texto sugerido:

Seu dispositivo carregou um sistema operacional diferente.

Acesse este link em outro dispositivo para saber mais:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para pausar

Dispositivos DESBLOQUEADOS

Exemplo de tela LARANJA:

Tela de alerta laranja do dispositivo

Mostrar a tela LARANJA em cada inicialização se o dispositivo estiver DESBLOQUEADO. A tela LARANJA é dispensada após dez segundos, e o dispositivo continua a inicialização. Se o usuário pressionar o botão liga/desliga, o texto "Pressione o botão liga/desliga para pausar" vai mudar para "Pressione o botão liga/desliga para continuar" e a tela nunca será dispensada. O dispositivo poderá escurecer e/ou desligar a tela, se necessário, para proteção contra burn-in ou semelhante. Se pressionar novamente, a tela será dispensada e o smartphone continuará a inicialização.

Para hex-number, use os primeiros 8 dígitos do sha256 da representação libavb da chave pública usada para verificação, por exemplo, d14a028c.

Texto sugerido:

O carregador de inicialização está desbloqueado e não é possível garantir a integridade do software. Todos os dados armazenados no dispositivo podem ficar disponíveis para invasores. Não armazene dados sensíveis no dispositivo.

Acesse este link em outro dispositivo para saber mais:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para pausar.

Corrupção de dm-verity

Exemplo de tela de eio RED:

Tela de aviso vermelha do dispositivo Eio

Mostre uma tela eio VERMELHA se uma versão válida do Android for encontrada e o dispositivo estiver no modo dm-verity eio. O usuário precisa clicar no botão liga/desliga para continuar. Se o usuário não confirmar a tela de aviso em 30 segundos, o dispositivo será desligado para proteger a tela contra burn-in e economizar energia.

Texto sugerido:

O dispositivo está corrompido. Ele não é confiável e pode não funcionar corretamente.

Acesse este link em outro dispositivo para saber mais:

g.co/ABH

Pressione o botão liga/desliga para continuar.

Nenhum SO válido encontrado

Exemplo de tela RED:

Tela de aviso de dispositivo corrompido em vermelho

Uma tela VERMELHA é mostrada se nenhuma versão válida do Android for encontrada. O dispositivo não pode continuar a inicialização. Se o usuário não confirmar a tela de aviso em 30 segundos, o dispositivo será desligado para proteger a tela contra queima e economizar energia.

Para hex-number, use os primeiros 8 dígitos do sha256 da representação libavb da chave pública usada para verificação, por exemplo, d14a028c.

Texto sugerido:

Não foi possível encontrar um sistema operacional válido. O dispositivo não inicializa.

Acesse este link em outro dispositivo para saber mais:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para desligar.

Confirmação de desbloqueio

Exemplo de tela:

Tela de aviso UNLOCK do dispositivo

Mostrar uma tela de confirmação de desbloqueio em resposta ao comando fastboot flashing unlock sendo executado pela interface Fastboot. O foco está inicialmente em Não desbloquear. Se o usuário não interagir com a tela de aviso em 30 segundos, ela vai desaparecer e o comando vai falhar.

Texto sugerido:

Se você desbloquear o carregador de inicialização, poderá instalar um software do sistema operacional personalizado nesse smartphone. Um SO personalizado não está sujeito ao mesmo nível de testes do SO original e pode fazer com que o smartphone e os apps instalados parem de funcionar corretamente. A integridade do software não pode ser garantida com um SO personalizado. Portanto, todos os dados armazenados no smartphone enquanto o carregador de inicialização está desbloqueado podem estar em risco.

Para impedir o acesso não autorizado aos seus dados pessoais, o desbloqueio do carregador de inicialização também exclui todos os dados pessoais do smartphone.

Pressione o botão de aumentar/diminuir volume para escolher se quer desbloquear o bootloader e pressione o botão liga/desliga para continuar.

Desbloquear

Desbloquear o carregador de inicialização.

Não desbloquear

Não desbloqueie o carregador de inicialização nem reinicie o smartphone.

Confirmação de bloqueio

Mostrar uma tela de confirmação de bloqueio em resposta ao comando fastboot flashing lock sendo executado pela interface do Fastboot. O foco está inicialmente em Não bloquear. Se o usuário não interagir com a tela de aviso em 30 segundos, ela vai desaparecer e o comando vai falhar.

Texto:

Se você bloquear o carregador de inicialização, não será possível instalar um software do sistema operacional personalizado neste smartphone. Para impedir o acesso não autorizado aos seus dados pessoais, bloquear o carregador de inicialização também exclui todos os dados pessoais do smartphone.

Pressione o botão de aumentar/diminuir volume para bloquear o carregador de inicialização e o botão liga/desliga para continuar.

Bloquear

Bloquear o carregador de inicialização.

Não bloquear

Não bloquear o carregador de inicialização e reiniciar o smartphone.

Comunicar o estado da Inicialização verificada ao Android

Exemplo de tela:

Tela de aviso de confirmação de bloqueio do dispositivo

O carregador de inicialização comunica o estado da Inicialização verificada ao Android usando parâmetros de comando do kernel ou bootconfig do Android 12 em diante. Ele define a opção androidboot.verifiedbootstate como um dos seguintes valores:

  • green: se o dispositivo for LOCKED e a raiz de confiança definida pelo usuário não for usada
  • yellow: se o dispositivo for LOCKED e a raiz de confiança definida pelo usuário for usada
  • orange: se o dispositivo for UNLOCKED

A opção androidboot.veritymode é definida como eio ou restart, dependendo do estado em que o carregador de inicialização está em relação ao processamento de erros dm-verity. Para mais detalhes, consulte Como lidar com erros de verificação.