OTA basadas en bloques

Puede habilitar actualizaciones inalámbricas (OTA) basadas en bloques para dispositivos nuevos que ejecutan Android 5.0. OTA es el mecanismo mediante el cual los OEM actualizan de forma remota la partición del sistema de un dispositivo:

  • Android 5.0 y versiones posteriores utilizan actualizaciones OTA en bloque para garantizar que cada dispositivo utilice exactamente la misma partición. En lugar de comparar archivos individuales y calcular parches binarios, Block OTA maneja la partición completa como un solo archivo y calcula un único parche binario, asegurando que la partición resultante contenga exactamente los bits deseados. Esto permite que la imagen del sistema del dispositivo alcance el mismo estado mediante fastboot u OTA.
  • Android 4.4 y versiones anteriores usaban actualizaciones de archivos OTA, lo que garantizaba que los dispositivos contuvieran contenidos de archivos, permisos y modos similares, pero permitían que metadatos como marcas de tiempo y el diseño del almacenamiento subyacente variaran entre dispositivos según el método de actualización.

Debido a que Block OTA garantiza que cada dispositivo use la misma partición, permite el uso de dm-verity para firmar criptográficamente la partición del sistema. Para obtener detalles sobre dm-verity, consulte Arranque verificado .

Nota: Debe tener un sistema OTA de bloque en funcionamiento antes de usar dm-verity.

Recomendaciones

Para dispositivos que se inician con Android 5.0 o posterior, use bloquear actualizaciones OTA en la ROM de fábrica. Para generar una OTA basada en bloques para actualizaciones posteriores, pase la opción --block a ota_from_target_files .

Para dispositivos que se iniciaron con Android 4.4 o anterior, utilice actualizaciones de archivos OTA. Si bien es posible realizar la transición de dispositivos enviando una OTA de bloque completo de Android 5.0 o posterior, es necesario enviar una OTA completa que sea significativamente más grande que una OTA incremental (y, por lo tanto, no se recomienda).

Debido a que dm-verity requiere soporte de cargador de arranque que se encuentra solo en dispositivos nuevos que se envían con Android 5.0 o posterior, no puede habilitar dm-verity para dispositivos existentes.

Los desarrolladores que trabajan en el sistema OTA de Android (la imagen de recuperación y los scripts que generan OTA) pueden mantenerse al día con los cambios suscribiéndose a la lista de correo android-ota@googlegroups.com .

OTA de archivos versus bloques

Durante una OTA basada en archivos, Android intenta cambiar el contenido de la partición del sistema en la capa del sistema de archivos (archivo por archivo). No se garantiza que la actualización escriba archivos en un orden consistente, que tenga una hora de última modificación o superbloque consistente, o incluso que coloque los bloques en la misma ubicación en el dispositivo de bloques. Por este motivo, las OTA basadas en archivos fallan en un dispositivo habilitado para dm-verity; después del intento OTA, el dispositivo no arranca.

Durante una OTA basada en bloques, Android le muestra al dispositivo la diferencia entre las dos imágenes de bloque (en lugar de dos conjuntos de archivos). La actualización compara la compilación de un dispositivo con el servidor de compilación correspondiente en el nivel de bloque (debajo del sistema de archivos) usando uno de los siguientes métodos:

  • Actualización completa . Copiar la imagen completa del sistema es sencillo y facilita la generación de parches, pero también genera imágenes de gran tamaño que pueden encarecer la aplicación de parches.
  • Actualización incremental . El uso de una herramienta de diferenciación binaria genera imágenes más pequeñas y facilita la aplicación del parche, pero consume mucha memoria al generar el parche en sí.

Nota: adb fastboot coloca exactamente los mismos bits en el dispositivo que una OTA completa, por lo que el flasheo es compatible con la OTA en bloque.

Actualizar sistemas no modificados

Para dispositivos con particiones del sistema no modificadas que ejecutan Android 5.0, el proceso de descarga e instalación de un bloque OTA sigue siendo el mismo que el de un archivo OTA. Sin embargo, la actualización OTA en sí puede incluir una o más de las siguientes diferencias:

  • Tamaño de descarga . Las actualizaciones OTA de bloque completo tienen aproximadamente el mismo tamaño que las actualizaciones OTA de archivos completos, y las actualizaciones incrementales pueden ser solo unos pocos megabytes más grandes.

    comparación de tamaños de OTA

    Figura 1. Comparar los tamaños de Nexus 6 OTA entre las versiones de Android 5.0 y Android 5.1 (cambios de compilación de destino variables)

    En general, las actualizaciones OTA de bloques incrementales son más grandes que las actualizaciones OTA de archivos incrementales debido a:

    • Conservación de datos . Las OTA basadas en bloques conservan más datos (metadatos de archivos, datos dm-verity, diseño ext4, etc.) que las OTA basadas en archivos.
    • Diferencias de algoritmos de cálculo . En una actualización OTA de un archivo, si la ruta de un archivo es idéntica en ambas compilaciones, el paquete OTA no contiene datos para ese archivo. En una actualización OTA en bloque, determinar pocos o ningún cambio en un archivo depende de la calidad del algoritmo de cálculo del parche y del diseño de los datos del archivo tanto en el sistema de origen como en el de destino.
  • Sensibilidad a flash y RAM defectuosos . Si un archivo está dañado, una OTA de archivo tiene éxito siempre que no toque el archivo dañado, pero una OTA de bloque falla si detecta algún daño en la partición del sistema.

Actualizar sistemas modificados

Para dispositivos con particiones del sistema modificadas que ejecutan Android 5.0:

  • Las actualizaciones OTA de bloque incremental fallan . Una partición del sistema puede modificarse durante un adb remount o como resultado de malware. File OTA tolera algunos cambios en la partición, como la adición de archivos que no forman parte de la compilación de origen o de destino. Sin embargo, el bloque OTA no tolera adiciones a la partición, por lo que los usuarios deberán instalar una OTA completa (sobrescribiendo cualquier modificación de la partición del sistema) o actualizar una nueva imagen del sistema para habilitar futuras OTA.
  • Los intentos de cambiar archivos modificados provocan errores en la actualización . Tanto para las actualizaciones OTA de archivos como de bloques, si la OTA intenta cambiar un archivo que ha sido modificado, la actualización OTA falla.
  • Los intentos de acceder a archivos modificados generan errores (solo dm-verity) . Tanto para las actualizaciones OTA de archivos como de bloques, si dm-verity está habilitado y la OTA intenta acceder a partes modificadas del sistema de archivos del sistema, la OTA genera un error.