Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Imágenes de recuperación

En no-A / B dispositivos, la imagen de recuperación debe contener información de una burbuja árbol de dispositivos (DTB) o Configuración avanzada e interfaz de energía (ACPI) superposición de imágenes. Cuando dichos dispositivos se inician en recuperación, el cargador de arranque puede cargar la imagen de superposición que es compatible con la imagen de recuperación. Los dispositivos que soporte / B (sin costuras), actualizaciones A deben utilizar como la recuperación de arranque en lugar de una partición de recuperación por separado (para más detalles, véase Ejecución A / B Actualizaciones ).

Las opciones para incluir un DTBO / ACPIO de recuperación como parte de la imagen de arranque / recuperación difieren entre las versiones de Android.

Liberación Esquema de actualización Cumplimiento de GKI Versión del encabezado de arranque (dispositivos de lanzamiento) Versión de encabezado de arranque (dispositivos de actualización) Se requiere una imagen de recuperación dedicada
11 A / B,
Virtual A / B
3 * N / A No
A / B,
Virtual A / B
No 2, 3 0, 1, 2, 3 No
no A / B 3 N / A
no A / B No 2, 3 0, 1, 2, 3
10 (Q) A / B N / A 2 0, 1, 2 No
no A / B N / A 2 0, 1, 2
9 (P) A / B N / A 1 0, 1 No
no A / B N / A 1 0, 1
8 (O) A / B N / A N / A (considerado 0) N / A (considerado 0) No
no A / B N / A N / A (considerado 0) N / A (considerado 0)

* Dispositivos A / B con Android 11 o superior y el uso de la imagen del núcleo genérico (GKI) debe utilizar un primario versión cabecera de arranque de 3 para que sea compatible con la partición de arranque proveedor .

Puntos clave:

  • A los dispositivos / B no necesitan especificar una imagen de recuperación como A / B actualizaciones utilizar dos conjuntos de particiones (incluyendo boot y dtbo ) y cambiar entre ellos durante las actualizaciones, eliminando la necesidad de una imagen de recuperación. Si lo desea, los dispositivos A / B aún pueden usar una imagen de recuperación dedicada.

  • No A / B lanzamiento de dispositivos con Android 11 o superior y el uso de una versión de cabecera de arranque de 3 debe especificar explícitamente una versión de arranque de cabecera 2 la imagen de recuperación de forma separada. Por ejemplo:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • Para arquitecturas que no admiten árboles de dispositivos, la imagen de recuperación puede incluir una imagen ACPIO en lugar de una imagen DTBO.

Acerca de las fallas de OTA y las imágenes de recuperación

Para evitar fallas por aire (OTA) en dispositivos que no sean A / B, la imagen de recuperación debe ser autosuficiente e independiente de otras imágenes. Durante una actualización de OTA, si se produce un problema después de que se haya actualizado la imagen superpuesta (pero antes de completar la actualización completa), el dispositivo intenta iniciar el modo de recuperación para completar la actualización de OTA. Sin embargo, debido a que la partición de superposición ya se ha actualizado, podría producirse una discrepancia con la imagen de recuperación (que aún no se ha actualizado).

Para evitar que la recuperación dependa de la partición DTBO / ACPIO durante una actualización, los dispositivos no A / B que ejecutan Android 9 o superior pueden especificar una imagen DTBO / ACPIO de recuperación que contenga información de la imagen superpuesta como una sección separada en el formato de imagen de arranque ( debe usar una versión de encabezado de arranque de 1 o 2).

Cambios en la imagen de arranque

Para permitir que la imagen de recuperación contenga el DTBO o ACPIO de recuperación en dispositivos que no sean A / B y ejecuten Android 9 o superior, actualice la estructura de la imagen de arranque de la siguiente manera.

Sección de imagen de arranque Número de páginas
Encabezado de arranque (1 página) 1
Kernel (l páginas) l = ( kernel_size + page_size - 1) / page_size
Ramdisk (m páginas) m = ( ramdisk_size + page_size - 1) / page_size
Cargador de arranque de segunda etapa (n páginas) n = ( second_size + page_size - 1) / page_size
Recuperación DTBO o ACPIO (o páginas) o = ( recovery_[dtbo|acpio]_size + page_size - 1) / page_size

Para más detalles sobre los mkbootimg argumentos de herramientas para especificar la versión de arranque cabecera de imagen y las rutas de imágenes superpuestas, ver la imagen de arranque de versiones de cabecera .

Implementando DTBO

Non-A / B dispositivos de funcionamiento 9 o superior puede poblar el recovery_dtbo sección de la imagen de recuperación. Para incluir el recovery_dtbo imagen en recovery.img , en el dispositivo BoardConfig.mk :

  • Establecer la configuración BOARD_INCLUDE_RECOVERY_DTBO de true :

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • Extender el BOARD_MKBOOTIMG_ARGS variable para especificar la versión de arranque encabezado de la imagen:

    BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • Asegúrese de que el BOARD_PREBUILT_DTBOIMAGE variable se establece en la ruta de la imagen DTBO. El sistema de construcción Android utiliza la variable para ajustar la recovery_dtbo argumento de la mkbootimg herramienta durante la creación de la imagen de recuperación.

Si los BOARD_INCLUDE_RECOVERY_DTBO , BOARD_MKBOOTIMG_ARGS y BOARD_PREBUILT_DTBOIMAGE variables se establecen correctamente, el sistema de construcción Android incluye la DTBO especificado por el BOARD_PREBUILT_DTBOIMAGE variable en recovery.img .

Implementando ACPIO

Non-A / B dispositivos con Android 9 o superior puede utilizar una imagen de superposición ACPIO (una imagen de DTBO en lugar de) y puede poblar el recovery_acpio sección (en lugar de la recovery_dtbo sección) de la imagen de recuperación. Para incluir el recovery_acpio imagen en recovery.img , en el dispositivo BoardConfig.mk :

  • Establecer la configuración BOARD_INCLUDE_RECOVERY_ACPIO de true :

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • Extender el BOARD_MKBOOTIMG_ARGS variable para especificar la versión de arranque encabezado de la imagen. La variable debe ser mayor o igual a 1 para admitir la recuperación ACPIO.

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • Asegúrese de que el BOARD_RECOVERY_ACPIO variable se establece en la ruta de la imagen ACPIO. El sistema de construcción Android utiliza la variable para ajustar la recovery_acpio argumento de la mkbootimg herramienta durante la creación de la imagen de recuperación.

Si los BOARD_INCLUDE_RECOVERY_ACPIO , BOARD_MKBOOTIMG_ARGS y BOARD_RECOVERY_ACPIO variables se establecen correctamente, el sistema de construcción Android incluye la ACPIO especificado por el BOARD_RECOVERY_ACPIO variable en recovery.img .