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

OTA basadas en bloques

Puede habilitar actualizaciones inalámbricas (OTA) basadas en bloques para nuevos dispositivos con 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 computar parches binarios, block OTA maneja toda la partición como un solo archivo y calcula un solo 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 a través de fastboot u OTA.
  • Android 4.4 y versiones anteriores usaban actualizaciones de archivos OTA, lo que garantizaba que los dispositivos tuvieran contenidos, permisos y modos de archivo similares, pero permitían que los metadatos, como las marcas de tiempo y el diseño del almacenamiento subyacente, variaran entre dispositivos según el método de actualización.

Debido a que el bloque OTA asegura 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 bloques que funcione antes de usar dm-verity.

Recomendaciones

Para dispositivos que se inician con Android 5.0 o posterior, use las actualizaciones de bloque OTA en la ROM de fábrica. Para generar un OTA basado en bloques para actualizaciones posteriores, pasar la --block opción de ota_from_target_files .

Para dispositivos que se lanzaron con Android 4.4 o anterior, use las 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 compatibilidad con el cargador de arranque que solo se encuentra en los dispositivos nuevos que se envían con Android 5.0 o posterior, no puede habilitar dm-verity para los dispositivos existentes.

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

Archivo frente a OTA en bloque

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, tenga un tiempo de última modificación consistente o superbloque, o incluso coloque los bloques en la misma ubicación en el dispositivo de bloques. Por esta razón, las OTA basadas en archivos fallan en un dispositivo habilitado para dm-verity; después del intento de OTA, el dispositivo no arranca.

Durante una OTA basada en bloques, Android 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) utilizando uno de los siguientes métodos:

  • Actualización completa . Copiar la imagen completa del sistema es simple y facilita la generación de parches, pero también genera imágenes grandes que pueden hacer que la aplicación de parches sea costosa.
  • 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 cuando se genera el parche.

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

Actualización de sistemas no modificados

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

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

    comparación de tamaños de OTA

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

    En general, las actualizaciones de OTA de bloque incrementales son más grandes que las actualizaciones de 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 del algoritmo de cálculo . En una actualización de archivo OTA, si una ruta de archivo es idéntica en ambas versiones, el paquete OTA no contiene datos para ese archivo. En una actualización de bloque OTA, determinar poco o ningún cambio en un archivo depende de la calidad del algoritmo de cálculo del parche y el 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, un archivo OTA tiene éxito siempre que no toque el archivo dañado, pero un bloque OTA falla si detecta algún daño en la partición del sistema.

Actualización de sistemas modificados

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

  • Las actualizaciones incrementales de bloque OTA fallan . Una partición del sistema puede modificarse durante un adb remount o como resultado de un 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 destino. Sin embargo, block 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 flashear una nueva imagen del sistema para habilitar futuras OTA.
  • Los intentos de cambiar los archivos modificados provocan un error de actualización . Para las actualizaciones de archivos y bloques de OTA, si la OTA intenta cambiar un archivo que se ha modificado, la actualización de OTA falla.
  • Los intentos de acceder a archivos modificados generan errores (solo dm-verity) . Para las actualizaciones de archivos y bloques de OTA, si dm-verity está habilitado y la OTA intenta acceder a partes modificadas del sistema de archivos del sistema, la OTA genera un error.