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 inicializar primeiro deve ser marcado como SUCCESSFUL usando o Boot Control HAL 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 de proteção contra reversão tiverem sido definidos, a versão anterior não poderá inicializar devido à proteção contra reversão.

Comunicando o estado de 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 apresentar nenhum problema, prossiga sem exibir nada. Os problemas de inicialização verificada se enquadram nestas categorias:

  • AMARELO: Tela de aviso para dispositivos BLOQUEADOS com raiz personalizada de confiança definida
  • LARANJA: Tela de aviso para dispositivos DESBLOQUEADOS
  • RED (eio): tela de aviso para corrupção dm-verity
  • RED (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 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 é descartada 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 protegê-la contra queimaduras). Se pressionado novamente, a tela é descartada e o telefone continua 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 .

Sugestão de texto:

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

Mostre uma tela LARANJA em cada inicialização se o dispositivo estiver DESBLOQUEADO. A tela LARANJA é descartada 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 pode escurecer e/ou desligar a tela se necessário para proteção contra queimaduras). em ou similar). Se pressionado novamente, a tela é descartada e o telefone continua 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 .

Sugestão de texto:

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.

dm-verity corrupção

Exemplo de tela RED eio:

Tela vermelha de aviso do dispositivo eio

Mostrar uma tela RED 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 reconhecer a tela de aviso em 30 segundos, o dispositivo será desligado (para proteger a tela contra queimaduras e economizar energia).

Sugestão de texto:

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 SO válido encontrado

Exemplo de tela VERMELHA:

Tela vermelha de aviso de dispositivo corrompido

Mostrar uma tela VERMELHA é mostrada se nenhuma versão válida do Android puder ser encontrada. O dispositivo não pode continuar inicializando. Se o usuário não reconhecer 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 .

Sugestão de texto:

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 DESBLOQUEADO

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

Sugestão de texto:

Se você desbloquear o bootloader, poderá instalar um software de sistema operacional personalizado neste telefone. Um sistema operacional personalizado não está sujeito ao mesmo nível de teste do 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, todos os dados armazenados no telefone enquanto o bootloader está desbloqueado podem estar em risco.

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

Pressione o botão 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.

Bloquear confirmação

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 Don't lock . Se o usuário não interagir com a tela de aviso em 30 segundos, a tela desaparece e o comando falha.

Texto:

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

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

Trancar

Bloquear bootloader.

não tranque

Não bloqueie o bootloader e reinicie o telefone.

Comunicando o estado de inicialização verificada para o Android

Tela de exemplo:

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

O bootloader comunica o estado de inicialização verificada para o Android por meio de parâmetros de comando do kernel ou por meio do bootconfig a partir do Android 12. Ele define a opção androidboot.verifiedstate para 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 inicialização está em relação ao tratamento de erros dm-verity. Para obter mais detalhes, consulte Tratamento de erros de verificação .