Fluxo de inicialização

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

Fluxo de inicialização verificado
Figura 1 . Fluxo de inicialização verificado

Fluxo para dispositivos A/B

Se o dispositivo estiver usando A/B, o fluxo de inicialização será um pouco diferente. O slot para inicialização deve primeiro 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 atualização de plataforma que falha (não está marcada como SUCCESSFUL ), a pilha A/B volta para o outro slot, que ainda contém a versão anterior do Android. No entanto, se os metadados da proteção contra reversão tiverem sido definidos, a versão anterior não poderá inicializar devido à proteção contra reversão.

Comunicação do estado de inicialização verificada aos usuários

Após determinar o estado de inicialização de um dispositivo, você precisa comunicar esse estado ao usuário. Se o dispositivo não apresentar problemas, prossiga sem exibir nada. Os problemas de inicialização verificados 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 do dm-verity
  • VERMELHO (nenhum sistema operacional encontrado): Nenhum sistema operacional válido encontrado

Dispositivos BLOQUEADOS com raiz de confiança personalizada

Exemplo de tela AMARELA:

Tela amarela de aviso de dispositivo

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 desaparece 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" mudará para "Pressione o botão liga/desliga para continuar" e a tela nunca será descartada, embora o dispositivo possa escurecer ou desligar a tela para proteger contra queimaduras). Se pressionado novamente, a tela será descartada e o telefone continuará inicializando.

Para o 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.

Visite 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 laranja de aviso do dispositivo

Mostrar uma tela LARANJA em cada inicialização se o dispositivo estiver DESBLOQUEADO. A tela LARANJA desaparece 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" mudará para "Pressione o botão liga/desliga para continuar" e a tela nunca será descartada (o dispositivo poderá escurecer e/ou desligar a tela se necessário para proteger contra queimaduras). em ou similar). Se pressionado novamente, a tela será descartada e o telefone continuará inicializando.

Para o 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 a integridade do software não pode ser garantida. Quaisquer dados armazenados no dispositivo podem estar disponíveis para invasores. Não armazene dados confidenciais no dispositivo.

Visite este link em outro dispositivo para saber mais:

g.co/ABH

ID: hex-number

Pressione o botão liga/desliga para pausar.

corrupção dm-verity

Exemplo de tela RED eio:

Tela vermelha de aviso do dispositivo eio

Mostre uma tela VERMELHA eio se uma versão válida do Android for encontrada e o dispositivo estiver atualmente 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 queimaduras e economizar energia).

Texto sugerido:

Seu dispositivo está corrompido. Não é confiável e pode não funcionar corretamente.

Visite este link em outro dispositivo para saber mais:

g.co/ABH

Pressione o botão liga / desliga para continuar.

Nenhum sistema operacional válido encontrado

Exemplo de tela VERMELHA:

Tela vermelha de aviso de dispositivo corrompido

Mostrar uma tela VERMELHA é mostrado 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 queimaduras e economizar energia).

Para o 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:

Nenhum sistema operacional válido foi encontrado. O dispositivo não inicializa.

Visite 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 exemplo:

Tela de aviso do dispositivo DESBLOQUEAR

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

Texto sugerido:

Se você desbloquear o bootloader, poderá instalar software de sistema operacional personalizado neste telefone. Um sistema operacional personalizado não está sujeito ao mesmo nível de testes que o sistema operacional original e pode fazer com que o telefone e os aplicativos instalados parem de funcionar corretamente. A integridade do software não pode ser garantida com um sistema operacional personalizado, portanto, quaisquer dados armazenados no telefone enquanto o bootloader estiver desbloqueado podem estar em risco.

Para evitar o acesso não autorizado aos seus dados pessoais, desbloquear o bootloader também excluirá todos os dados pessoais do seu telefone.

Pressione Aumentar/Diminuir volume para selecionar se deseja desbloquear o bootloader e, em seguida, o botão liga / desliga para continuar.

Desbloquear

Desbloqueie o bootloader.

Não desbloqueie

Não desbloqueie o bootloader e reinicie o telefone.

Confirmação de bloqueio

Mostrar uma tela de confirmação de bloqueio em resposta ao comando fastboot flashing lock sendo executado por meio da 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, a tela desaparecerá e o comando falhará.

Texto:

Se você bloquear o bootloader, não será possível instalar software de sistema operacional personalizado neste telefone. Para evitar o acesso não autorizado aos seus dados pessoais, bloquear o bootloader também excluirá todos os dados pessoais do seu telefone.

Pressione Aumentar/Diminuir volume para selecionar se deseja bloquear o bootloader e, em seguida, o botão liga / desliga para continuar.

Trancar

Bloqueie o carregador de inicialização.

Não bloqueie

Não bloqueie o bootloader e reinicie o telefone.

Comunicando o estado de inicialização verificada ao Android

Tela de exemplo:

Tela de aviso do dispositivo de confirmação LOCK

O bootloader comunica o estado de inicialização verificada ao Android por meio de parâmetros de comando do kernel ou por meio de bootconfig a partir do Android 12. Ele define a opção androidboot.verifiedbootstate como um dos seguintes valores:

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

A opção androidboot.veritymode é definida como eio ou restart dependendo do estado em que o carregador de boot está em relação ao tratamento de erros de dm-verity. Para obter mais detalhes, consulte Tratamento de erros de verificação .