Puoi attivare gli aggiornamenti over-the-air (OTA) basati su blocchi per i nuovi dispositivi con Android 5.0. OTA è il meccanismo mediante il quale gli OEM aggiornano da remoto la partizione di sistema di un dispositivo:
- Android 5.0 e le versioni successive utilizzano gli aggiornamenti OTA bloccati per garantire che ogni dispositivo utilizzi esattamente la stessa partizione. Anziché confrontare i singoli file e calcolare le patch di codice binario, l'OTA a blocchi gestisce l'intera partizione come un unico file e calcola una singola patch di codice binario, garantendo che la partizione risultante contenga esattamente i bit previsti. In questo modo, l'immagine di sistema del dispositivo può raggiungere lo stesso stato tramite fastboot o OTA.
- Android 4.4 e le versioni precedenti utilizzavano aggiornamenti OTA dei file, che garantivano che i dispositivi avessero contenuti, autorizzazioni e modalità dei file simili, ma consentivano che metadati come i timestamp e il layout dello spazio di archiviazione sottostante variassero da un dispositivo all'altro in base al metodo di aggiornamento.
Poiché il blocco OTA garantisce che ogni dispositivo utilizzi la stessa partizione, consente l'utilizzo di dm-verity per firmare crittograficamente la partizione di sistema. Per informazioni dettagliate su dm-verity, consulta Avvio verificato.
Nota:prima di utilizzare dm-verity, devi disporre di un sistema OTA di blocco funzionante.
Consigli
Per i dispositivi lanciati con Android 5.0 o versioni successive, utilizza 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, utilizza gli aggiornamenti OTA dei file. Sebbene sia possibile eseguire la transizione dei dispositivi inviando un'OTA completa di blocco di Android 5.0 o versioni successive, è necessario inviare un'OTA completa molto più grande di un'OTA incrementale (e pertanto è sconsigliata).
Poiché dm-verity richiede il supporto del bootloader disponibile solo nei nuovi dispositivi con Android 5.0 o versioni successive, non puoi attivare dm-verity per i dispositivi esistenti.
Gli sviluppatori che lavorano al sistema OTA di Android (l'immagine di ripristino e gli script che generano OTA) possono rimanere al passo con le modifiche iscrivendosi alla mailing list android-ota@googlegroups.com.
OTA file e OTA a blocchi
Durante un aggiornamento OTA basato su file, Android tenta di modificare i contenuti della partizione di sistema a livello di file system (file per file). Non è garantito che l'aggiornamento scriva i file in un ordine coerente, abbia un superblocco o un'ora di ultima modifica coerente o addirittura posi i blocchi nella stessa posizione sul dispositivo di blocco. Per questo motivo, gli OTA basati su file non riescono su un dispositivo con DM-Verity abilitato; dopo il tentativo OTA, il dispositivo non si avvia.
Durante un aggiornamento OTA basato su blocchi, Android fornisce al dispositivo la differenza tra le due immagini di blocco (anziché due insiemi di file). L'aggiornamento controlla una build del dispositivo rispetto al server di build corrispondente a livello di blocco (sotto il file system) utilizzando uno dei seguenti metodi:
- Aggiornamento completo. La copia dell'immagine di sistema completa è 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 confronto binario genera immagini più piccole e semplifica l'applicazione della patch, ma richiede molta memoria per la generazione della patch stessa.
Nota: adb fastboot
inserisce sul dispositivo gli stessi bit di un OTA completo, pertanto il flashing è compatibile con l'OTA a blocchi.
Aggiornare i sistemi non modificati
Per i dispositivi con partizioni di sistema non modificate che utilizzano Android 5.0, la procedura di download e installazione di un aggiornamento OTA di blocco rimane invariata rispetto a quella di un aggiornamento OTA di file. Tuttavia, l'aggiornamento OTA stesso potrebbe includere una o più delle seguenti differenze:
-
Dimensioni del download.
Gli aggiornamenti OTA di blocco completo hanno le stesse dimensioni approssimative degli aggiornamenti OTA dei file completi e gli aggiornamenti incrementali possono essere solo di qualche megabyte più grandi.
Figura 1. Confronta le dimensioni dell'OTA di Nexus 6 tra le release Android 5.0 e Android 5.1 (variazioni delle modifiche alla build di destinazione)
In generale, gli aggiornamenti OTA incrementali dei blocchi sono più grandi degli aggiornamenti OTA incrementali dei file a causa di:
- Conservazione dei dati. Le OTA basate su blocchi conservano più dati (metadati dei file, dati dm-verity, layout ext4 e così via) rispetto alle OTA basate su file.
- Differenze negli algoritmi di calcolo. In un aggiornamento OTA dei file, se un percorso del file è identico in entrambe le build, il pacchetto OTA non contiene dati per quel file. In un aggiornamento OTA a blocchi, la determinazione di una modifica minima o nulla in un file dipende dalla qualità dell'algoritmo di calcolo della patch e dal layout dei dati del file sia nel sistema di origine sia in quello di destinazione.
- Sensibilità a flash e RAM difettosi. Se un file è danneggiato, l'OTA del file va a buon fine a condizione che non tocchi il file danneggiato, ma l'OTA del blocco non va a buon fine se rileva danni alla partizione di sistema.
Aggiorna i sistemi modificati
Per i dispositivi con partizioni di sistema modificate che eseguono Android 5.0:
-
Gli aggiornamenti OTA con blocco incrementale non riescono. Una partizione di sistema potrebbe essere modificata durante un
adb remount
o a causa di un malware. L'OTA file tollera alcune modifiche alla partizione, ad esempio l'aggiunta di file che non fanno parte della build di origine o di destinazione. Tuttavia, il blocco OTA non tollera le aggiunte alla partizione, pertanto gli utenti dovranno installare un'OTA completa sovrascrivendo eventuali modifiche alla partizione di sistema o eseguire il flashing di una nuova immagine di sistema per abilitare le OTA future. - I tentativi di modificare i file modificati causano l'errore di aggiornamento. Per gli aggiornamenti OTA sia dei file sia dei blocchi, se l'OTA tenta di modificare un file che è stato modificato, l'aggiornamento OTA non va a buon fine.
- I tentativi di accedere ai file modificati generano errori (solo per dm-verity). Per gli aggiornamenti OTA sia di file che di blocco, se dm-verity è abilitato e l'OTA tenta di accedere alle parti modificate del file system di sistema, l'OTA genera un errore.