OTA basate su blocchi

Puoi abilitare gli aggiornamenti over-the-air (OTA) basati su blocco per i nuovi dispositivi con Android 5.0. OTA è il meccanismo mediante il quale gli OEM aggiornano in remoto la partizione di sistema di un dispositivo:

  • Android 5.0 e versioni successive utilizzano gli aggiornamenti OTA bloccati per garantire che ciascun dispositivo utilizzi esattamente la stessa partizione. Invece di confrontare singoli file e calcolare patch binarie, il blocco OTA gestisce l'intera partizione come un unico file e calcola una singola patch binaria, garantendo che la partizione risultante contenga esattamente i bit desiderati. Ciò consente all'immagine del sistema del dispositivo di raggiungere lo stesso stato tramite fastboot o OTA.
  • Android 4.4 e versioni precedenti utilizzavano aggiornamenti di file OTA, che garantivano che i dispositivi contenessero contenuti di file, autorizzazioni e modalità simili, ma consentivano ai metadati come timestamp e il layout dello spazio di archiviazione sottostante di variare tra i dispositivi in ​​base al metodo di aggiornamento.

Poiché il blocco OTA garantisce che ciascun dispositivo utilizzi la stessa partizione, consente l'uso di dm-verity per firmare crittograficamente la partizione di sistema. Per dettagli su dm-verity, vedere Avvio verificato .

Nota: è necessario disporre di un sistema OTA a blocchi funzionante prima di utilizzare dm-verity.

Raccomandazioni

Per i dispositivi avviati con Android 5.0 o versioni successive, utilizzare il blocco degli aggiornamenti OTA nella ROM di fabbrica. Per generare un OTA basato su blocchi per gli aggiornamenti successivi, passa l'opzione --block a ota_from_target_files .

Per i dispositivi lanciati con Android 4.4 o versioni precedenti, utilizzare gli aggiornamenti file OTA. Anche se è possibile eseguire la transizione dei dispositivi inviando un blocco OTA completo di Android 5.0 o versioni successive, è necessario inviare un OTA completo che sia significativamente più grande di un OTA incrementale (ed è quindi sconsigliato).

Poiché dm-verity richiede il supporto del bootloader disponibile solo nei nuovi dispositivi forniti con Android 5.0 o versioni successive, non è possibile abilitare dm-verity per i dispositivi esistenti.

Gli sviluppatori che lavorano sul sistema Android OTA (l'immagine di ripristino e gli script che generano OTA) possono tenere il passo con i cambiamenti iscrivendosi alla mailing list android-ota@googlegroups.com .

File o OTA a blocchi

Durante un'OTA basata su file, Android tenta di modificare il contenuto della partizione di sistema a livello del file system (file per file). Non è garantito che l'aggiornamento scriva i file in un ordine coerente, abbia un'ora dell'ultima modifica o un superblocco coerente o addirittura posizioni i blocchi nella stessa posizione sul dispositivo a blocchi. Per questo motivo, le OTA basate su file falliscono su un dispositivo abilitato per dm-verity; dopo il tentativo OTA, il dispositivo non si avvia.

Durante un'OTA basata su blocchi, Android fornisce al dispositivo la differenza tra le due immagini del blocco (anziché due set di file). L'aggiornamento confronta la build di un dispositivo con il server di build corrispondente a livello di blocco (sotto il file system) utilizzando uno dei seguenti metodi:

  • Aggiornamento completo . Copiare l'immagine completa del sistema è semplice e semplifica la generazione delle patch, ma genera anche immagini di grandi dimensioni che possono rendere costosa l'applicazione delle patch.
  • Aggiornamento incrementale . L'utilizzo di uno strumento di differenziazione binaria genera immagini più piccole e semplifica l'applicazione della patch, ma richiede un uso intensivo della memoria durante la generazione della patch stessa.

Nota: adb fastboot inserisce esattamente gli stessi bit sul dispositivo come OTA completo, quindi il flashing è compatibile con il blocco OTA.

Aggiorna i sistemi non modificati

Per i dispositivi con partizioni di sistema non modificate che eseguono Android 5.0, il processo di download e installazione per un blocco OTA rimane lo stesso di un file OTA. Tuttavia, l'aggiornamento OTA stesso potrebbe includere una o più delle seguenti differenze:

  • Scarica dimensione . Gli aggiornamenti OTA a blocco completo hanno all'incirca le stesse dimensioni degli aggiornamenti OTA a file completo e gli aggiornamenti incrementali possono essere più grandi di pochi megabyte.

    confronto delle dimensioni dell'OTA

    Figura 1. Confronta le dimensioni OTA del Nexus 6 tra le versioni Android 5.0 e Android 5.1 (variazioni della build di destinazione)

    In generale, gli aggiornamenti OTA a blocchi incrementali sono più grandi degli aggiornamenti OTA a file incrementali a causa di:

    • Conservazione dei dati . Le OTA basate su blocchi conservano più dati (metadati dei file, dati dm-verity, layout ext4, ecc.) rispetto alle OTA basate su file.
    • Differenze tra gli algoritmi di calcolo . In un aggiornamento di file OTA, se il percorso di un file è identico in entrambe le build, il pacchetto OTA non contiene dati per quel file. In un aggiornamento OTA a blocchi, la determinazione di modifiche minime o nulle in un file dipende dalla qualità dell'algoritmo di calcolo della patch e dal layout dei dati del file sia nel sistema di origine che in quello di destinazione.
  • Sensibilità a flash e RAM difettosi . Se un file è danneggiato, un file OTA ha esito positivo purché non tocchi il file danneggiato, ma un blocco OTA fallisce se rileva eventuali danni sulla partizione di sistema.

Aggiorna i sistemi modificati

Per dispositivi con partizioni di sistema modificate con Android 5.0:

  • Gli aggiornamenti OTA del blocco incrementale non riescono . Una partizione di sistema potrebbe essere modificata durante un adb remount o come risultato di malware. File OTA tollera alcune modifiche alla partizione, come l'aggiunta di file che non fanno parte della build di origine o di destinazione. Tuttavia, il blocco OTA non tollera aggiunte alla partizione, quindi gli utenti dovranno installare un OTA completo (sovrascrivendo eventuali modifiche alla partizione di sistema) o eseguire il flashing di una nuova immagine di sistema per abilitare OTA futuri.
  • I tentativi di modificare i file modificati causano un errore di aggiornamento . Sia per gli aggiornamenti OTA di file che di blocco, se l'OTA tenta di modificare un file che è stato modificato, l'aggiornamento OTA non riesce.
  • I tentativi di accedere ai file modificati generano errori (solo dm-verity) . Sia per gli aggiornamenti OTA di file che di blocco, se dm-verity è abilitato e l'OTA tenta di accedere a parti modificate del file system di sistema, l'OTA genera un errore.