Fluxo de inicialização

O fluxo de inicialização recomendado para um dispositivo é descrito nesta página e ilustrado na Figura 1:

Fluxo da 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 da plataforma que falhar (não for 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, informe esse estado ao usuário. Se o dispositivo não tiver problemas, continue sem mostrar nada. Os problemas da 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

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 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 pode diminuir o brilho 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 está carregando um sistema operacional diferente.

Acesse este link em outro dispositivo:

g.co/ABH

Impressão digital do SO: hex-number

Pressione o botão liga/desliga para pausar

Exemplo de uma tela AMARELA
Figura 2. Exemplo de uma tela AMARELA.

Dispositivos DESBLOQUEADOS

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 vai 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:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para pausar.

Exemplo de uma tela LARANJA
Figura 3. Exemplo de uma tela LARANJA.

Corrupção de dm-verity

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 pressionar o 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 o efeito 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:

g.co/ABH

Pressione o botão liga/desliga para continuar.

Exemplo de uma tela do RED eio
Figura 4. Exemplo de uma tela do RED eio.

Nenhum SO válido encontrado

Mostrar uma tela VERMELHA 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 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 vai inicializar.

Acesse este link em outro dispositivo:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para desligar.

Exemplo de uma tela vermelha
Figura 5. Exemplo de uma tela RED.

Confirmação de desbloqueio

Mostrar 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:

Ao desbloquear o carregador de inicialização, você poderá instalar um software de sistema operacional personalizado neste 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 aplicativos instalados parem de funcionar corretamente.

A integridade do software não é garantida com um SO personalizado. Por isso, 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 as teclas de volume para selecionar se quer desbloquear o bootloader e, em seguida, o botão liga/desliga para continuar.

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

Desbloqueie o carregador de inicialização.

Exemplo de uma tela de confirmação de desbloqueio
Figura 6. Exemplo de uma tela de confirmação de desbloqueio.

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 fica 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 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 as teclas de volume para selecionar se quer bloquear o bootloader e, em seguida, o botão liga/desliga para continuar.

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

Bloqueie o carregador de inicialização.

Tela de aviso do dispositivo de confirmação de bloqueio
Figura 7. Tela de aviso do dispositivo de confirmação de bloqueio.

Comunicar o estado da Inicialização verificada ao Android

O carregador de inicialização comunica o estado da inicialização verificada ao Android usando parâmetros de comando do kernel ou o bootconfig no Android 12 e versões mais recentes. O carregador de inicialização 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 Lidar com erros de verificação.