El flujo de inicio recomendado para un dispositivo es el siguiente:

Figura 1: Flujo de inicio verificado.
Flujo para dispositivos A/B
Si el dispositivo usa A/B, el flujo de inicio es ligeramente diferente. Primero, el zócalo que se iniciará debe marcarse como SUCCESSFUL
con el HAL de control de inicio antes de actualizar los metadatos de protección contra la reversión.
Si hay una actualización de plataforma que falla (no está marcada como SUCCESSFUL
), la pila A/B recurre al otro espacio, que aún tiene la versión anterior de Android. Sin embargo, si se establecieron los metadatos de la protección contra reversiones, la versión anterior no se puede iniciar debido a la protección contra reversiones.
Comunica el estado de inicio verificado a los usuarios
Después de determinar el estado de inicio de un dispositivo, debes comunicar ese estado al usuario. Si el dispositivo no tiene ningún problema, continúa sin mostrar nada. Los problemas de inicio verificado se incluyen en las siguientes categorías:
- AMARILLO: Pantalla de advertencia para dispositivos BLOQUEADOS con una raíz de confianza personalizada establecida
- NARANJA: Pantalla de advertencia para dispositivos DESBLOQUEADOS
- RED (eio): Pantalla de advertencia de corrupción de dm-verity
- RED (no os found): No se encontró un SO válido.
Dispositivos LOCKED con raíz de confianza personalizada
Ejemplo de pantalla AMARILLA:

Muestra una pantalla AMARILLA en cada inicio si el dispositivo está BLOQUEADO, se configuró una raíz de confianza personalizada y la imagen se firmó con esta raíz de confianza personalizada. La pantalla AMARILLA se descarta después de diez segundos y el dispositivo continúa con el inicio. Si el usuario presiona el botón de encendido, el texto "Presiona el botón de encendido para pausar" cambia a "Presiona el botón de encendido para continuar" y la pantalla nunca se oculta (aunque el dispositivo puede atenuar o apagar la pantalla para evitar que se queme). Si se vuelve a presionar, se descarta la pantalla y el teléfono continúa con el inicio.
Para hex-number, usa los primeros 8 dígitos del sha256 de la representación de libavb de la clave pública que se usa para la verificación, por ejemplo, d14a028c
.
Texto sugerido:
Tu dispositivo cargó un sistema operativo diferente.
Visita este vínculo en otro dispositivo para obtener más información:
g.co/ABH
ID: hex-number
Presiona el botón de encendido para pausar
Dispositivos DESBLOQUEADOS
Ejemplo de pantalla NARANJA:

Muestra una pantalla NARANJA en cada inicio si el dispositivo está DESBLOQUEADO. La pantalla AMARILLA se descarta después de diez segundos y el dispositivo continúa con el inicio. Si el usuario presiona el botón de encendido, el texto "Presiona el botón de encendido para pausar" cambia a "Presiona el botón de encendido para continuar" y la pantalla nunca se oculta (el dispositivo puede atenuar o apagar la pantalla si es necesario para proteger contra quemaduras o situaciones similares). Si se vuelve a presionar, se descarta la pantalla y el teléfono continúa con el inicio.
Para hex-number, usa los primeros 8 dígitos del sha256 de la representación de la clave pública de la biblioteca libavb que se usa para la verificación, por ejemplo, d14a028c
.
Texto sugerido:
El bootloader está desbloqueado, y no se puede garantizar la integridad del software. Los atacantes podrían acceder a los datos almacenados en el dispositivo. No almacenes datos sensibles en el dispositivo.
Visita este vínculo en otro dispositivo para obtener más información:
g.co/ABH
ID: hex-number
Presiona el botón de encendido para pausar.
Corrupción de dm-verity
Ejemplo de pantalla de eio de RED:

Muestra una pantalla eio
ROJA si se encuentra una versión válida de Android y el dispositivo está actualmente en el modo dm-verity de eio
. El usuario debe hacer clic en el botón de encendido para continuar. Si el usuario no confirma la pantalla de advertencia en un plazo de 30 segundos, el dispositivo se apaga (para proteger la pantalla contra el quemado y ahorrar energía).
Texto sugerido:
Tu dispositivo está dañado. No se puede confiar en él y es posible que no funcione correctamente.
Visita este vínculo en otro dispositivo para obtener más información:
g.co/ABH
Presiona el botón de encendido para continuar.
No se encontró un SO válido
Ejemplo de pantalla ROJA:

Se muestra una pantalla ROJA si no se puede encontrar una versión válida de Android. El dispositivo no puede continuar con el inicio. Si el usuario no confirma la pantalla de advertencia en un plazo de 30 segundos, el dispositivo se apaga para proteger la pantalla contra la quema y ahorrar energía.
Para hex-number, usa los primeros 8 dígitos del sha256 de la representación de libavb de la clave pública que se usa para la verificación, por ejemplo, d14a028c
.
Texto sugerido:
No se pudo encontrar un sistema operativo válido. El dispositivo no se inicia.
Visita este vínculo en otro dispositivo para obtener más información:
g.co/ABH
ID: hex-number
Presiona el botón de encendido para apagar el dispositivo.
Confirmación de desbloqueo
Pantalla de ejemplo:

Muestra una pantalla de confirmación de desbloqueo en respuesta al comando fastboot flashing unlock
que se ejecuta a través de la interfaz de fastboot. Inicialmente, el enfoque está en No desbloquear. Si el usuario no interactuó con la pantalla de advertencia en un plazo de 30 segundos, la pantalla desaparecerá y el comando fallará.
Texto sugerido:
Si desbloqueas el bootloader, podrás instalar software del sistema operativo personalizado en este teléfono. Un SO personalizado no está sujeto al mismo nivel de pruebas que el SO original y puede hacer que el teléfono y las apps instaladas dejen de funcionar correctamente. No se puede garantizar la integridad del software con un SO personalizado, por lo que los datos almacenados en el teléfono mientras el bootloader está desbloqueado pueden estar en riesgo.
Para evitar el acceso no autorizado a tus datos personales, desbloquear el bootloader también borra todos los datos personales del teléfono.
Presiona el botón de volumen hacia arriba o hacia abajo para seleccionar si quieres desbloquear el bootloader y, luego, el botón de encendido para continuar.
Destrabar
Desbloquea el bootloader.
No desbloquear
No desbloquees el bootloader ni reinicies el teléfono.
Confirmación del bloqueo
Muestra una pantalla de confirmación de bloqueo en respuesta al comando fastboot flashing
lock
que se ejecuta a través de la interfaz de fastboot. Inicialmente, la opción No bloquear está seleccionada. Si el usuario no interactuó con la pantalla de advertencia en un plazo de 30 segundos, la pantalla desaparecerá y el comando fallará.
Text:
Si bloqueas el bootloader, no podrás instalar software del sistema operativo personalizado en este teléfono. Para evitar el acceso no autorizado a tus datos personales, el bloqueo del bootloader también borra todos los datos personales del teléfono.
Presiona el botón de volumen hacia arriba o hacia abajo para seleccionar si quieres bloquear el bootloader y, luego, el botón de encendido para continuar.
Bloquear
Bloquea el bootloader.
No bloquear
No bloquees el bootloader y reinicia el teléfono.
Cómo comunicar el estado de inicio verificado a Android
Pantalla de ejemplo:

El bootloader comunica el estado de inicio verificado a Android a través de parámetros de comando del kernel o a través de bootconfig a partir de Android 12.
Establece la opción androidboot.verifiedbootstate
en uno de los siguientes valores:
green
: Si el dispositivo esLOCKED
y no se usa la raíz de confianza configurable por el usuarioyellow
: Si el dispositivo esLOCKED
y se usa la raíz de confianza que puede configurar el usuarioorange
: Si el dispositivo esUNLOCKED
La opción androidboot.veritymode
se establece en eio
o restart
según el estado en el que se encuentra el cargador de arranque con respecto al manejo de errores de dm-verity. Para obtener más detalles, consulta Cómo controlar los errores de verificación.