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 a ser inicializado precisa primeiro ser marcado como SUCCESSFUL usando o HAL de controle de inicialização antes de atualizar os metadados de proteção contra rollback.

Se houver uma atualização de plataforma com falha (não marcada como SUCCESSFUL), a pilha A/B vai voltar ao outro slot, que ainda tem a versão anterior do Android. No entanto, se os metadados de proteção contra reversão tivessem sido definidos, a versão anterior não poderia 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, você precisa comunicar esse estado ao usuário. Se o dispositivo não tiver problemas, continue 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
  • VERMELHO (eio): tela de aviso para corrupção de dm-verity
  • VERMELHO (nenhum SO encontrado): nenhum SO válido encontrado

Dispositivos BLOQUEADOS com raiz de confiança personalizada

Tela de alerta amarela do dispositivo
Figura 2: exemplo de uma tela amarela

Mostrar 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 inicializando. 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 evitar burn-in). Se pressionado novamente, a tela será dispensada e o smartphone continuará a inicialização.

Para o hex-number, use os oito primeiros 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

Tela de alerta laranja do dispositivo
Figura 3: exemplo de uma tela laranja

Mostrar uma tela LARANJA em cada inicialização se o dispositivo estiver DESBLOQUEADO. A tela LARANJA é dispensada após dez segundos, e o dispositivo continua inicializando. 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 pode diminuir o brilho e/ou desligar a tela, se necessário, para evitar o efeito burn-in ou algo semelhante. Se pressionado novamente, a tela será dispensada e o smartphone continuará inicializando.

Para o hex-number, use os oito primeiros 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 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

Tela de alerta vermelha do dispositivo eio
Figura 4: exemplo de uma tela vermelha do eio

Mostre uma tela VERMELHA eio se uma versão válida do Android for encontrada e o dispositivo estiver no modo eio dm-verity. 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:

Seu 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

Tela de alerta vermelha de dispositivo corrompido
Figura 5: exemplo de uma tela vermelha

Uma tela VERMELHA será 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 o efeito burn-in e economizar energia.

Para o hex-number, use os oito primeiros 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

Tela de aviso de DESBLOQUEIO do dispositivo
Figura 6: exemplo de uma tela de confirmação de desbloqueio

Mostra uma tela de confirmação de desbloqueio em resposta à execução do comando fastboot flashing unlock pela interface fastboot. O foco inicial é 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 de sistema operacional personalizado no smartphone. Um SO personalizado não está sujeito ao mesmo nível de testes que o 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 ser expostos a riscos.

Para evitar 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 Aumentar volume/Diminuir volume para selecionar se quer desbloquear o carregador de inicialização e, em seguida, o botão liga/desliga para continuar.

Desbloquear

Desbloqueie o carregador de inicialização.

Não desbloquear

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

Confirmação de bloqueio

Mostra uma tela de confirmação de bloqueio em resposta à execução do comando fastboot flashing lock pela interface 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 de sistema operacional personalizado neste smartphone. Para evitar o acesso não autorizado aos seus dados pessoais, o bloqueio do carregador de inicialização também exclui todos os dados pessoais do smartphone.

Pressione Aumentar volume/Diminuir volume para selecionar se quer bloquear o carregador de inicialização e, em seguida, o botão liga/desliga para continuar.

Bloquear

Bloqueie o carregador de inicialização.

Não bloquear

Não bloqueie o carregador de inicialização e reinicie o smartphone.

Comunicar o estado da Inicialização verificada ao Android

Tela de aviso do dispositivo de confirmação de BLOQUEIO
Figura 7: tela de aviso do dispositivo de confirmação de bloqueio

O carregador de inicialização comunica o estado da Inicialização verificada ao Android usando parâmetros de comando do kernel ou o bootconfig a partir do Android 12. 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 de dm-verity. Para mais detalhes, consulte Como lidar com erros de verificação.