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 deve primeiro 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 falhe (não está marcada com 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 foram definidos, a versão anterior não pode 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 tiver problemas, continue 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 do 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

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 é 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" muda para "Pressione o botão liga / desliga para continuar" e a tela nunca é descartada, embora o dispositivo possa escurecer ou desligar a tela para proteger contra burn-in). 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 .

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

Mostrar 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" muda para "Pressione o botão liga/desliga para continuar" e a tela nunca é descartada (o dispositivo pode escurecer e/ou desligar a tela, se necessário, para proteger 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 .

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 de aviso do dispositivo eio vermelho

Mostre uma tela RED 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 reconhecer 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. 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 de aviso de dispositivo corrompido vermelho

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 burn-in 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

Exemplo de tela:

DESBLOQUEAR tela de aviso do dispositivo

Mostrar uma tela de confirmação de desbloqueio em resposta ao comando de fastboot flashing unlock de inicialização rápida sendo executado por meio da interface de inicialização rápida. 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 um software de sistema operacional personalizado neste telefone. Um sistema operacional personalizado não está sujeito ao mesmo nível de teste 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 carregador de inicialização está 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 carregador de inicialização e, em seguida, o botão liga / desliga para continuar.

Desbloquear

Desbloqueie o carregador de inicialização.

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 poderá instalar o 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 verificado para o Android

Exemplo de tela:

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

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