Blockbasierte OTAs

Sie können blockbasierte Over-the-air-Updates (OTA) für neue Geräte mit Android 5.0 aktivieren. OTA ist der Mechanismus, mit dem OEMs die Systempartition eines Geräts per Fernzugriff aktualisieren:

  • Bei Android 5.0 und höher werden OTA-Updates blockiert, damit jedes Gerät dieselbe Partition verwendet. Anstatt einzelne Dateien zu vergleichen und Binär-Patches zu berechnen, behandelt Block-OTA die gesamte Partition als eine Datei und berechnet einen einzelnen Binär-Patch, damit die resultierende Partition genau die gewünschten Bits enthält. So kann das System-Image des Geräts über Fastboot oder OTA denselben Status erreichen.
  • Bei Android 4.4 und früheren Versionen wurden OTA-Dateiupdates verwendet, die dafür sorgten, dass die Geräte ähnliche Dateiinhalte, Berechtigungen und Modi hatten. Metadaten wie Zeitstempel und das Layout des zugrunde liegenden Speichers konnten jedoch je nach Updatemethode zwischen den Geräten variieren.

Da block OTA dafür sorgt, dass jedes Gerät dieselbe Partition verwendet, kann die Systempartition mit dm-verity kryptografisch signiert werden. Weitere Informationen zu dm-verity finden Sie unter Bootmodus mit Verifikation.

Hinweis:Sie benötigen ein funktionierendes Block-OTA-System, bevor Sie dm-verity verwenden können.

Empfehlungen

Bei Geräten, die mit Android 5.0 oder höher ausgeliefert werden, blockieren Sie OTA-Updates im ROM des Herstellers. Wenn Sie ein blockbasiertes OTA für nachfolgende Updates generieren möchten, übergeben Sie die Option --block an ota_from_target_files.

Verwenden Sie für Geräte, die mit Android 4.4 oder niedriger ausgeliefert wurden, OTA-Updates per Datei. Es ist zwar möglich, Geräte zu migrieren, indem Sie ein vollständiges OTA-Update von Android 5.0 oder höher senden, aber dafür ist ein vollständiges OTA-Update erforderlich, das deutlich größer als ein inkrementelles OTA-Update ist. Wir raten daher davon ab.

Da dm-verity die Unterstützung des Bootloaders erfordert, die nur auf neuen Geräten mit Android 5.0 oder höher verfügbar ist, können Sie dm-verity für vorhandene Geräte nicht aktivieren.

Entwickler, die am Android-OTA-System (Recovery-Image und Scripts zur Generierung von OTAs) arbeiten, können sich über die Änderungen informieren, indem sie die Mailingliste android-ota@googlegroups.com abonnieren.

Datei- und Block-Over-the-air-Updates

Bei einer dateibasierten OTA-Aktualisierung versucht Android, den Inhalt der Systempartition auf Dateiebene zu ändern (dateiweise). Es kann nicht garantiert werden, dass die Dateien in einer konsistenten Reihenfolge geschrieben werden, dass sie einen konsistenten Änderungszeitpunkt oder Superblock haben oder dass die Blöcke am selben Ort auf dem Blockgerät abgelegt werden. Aus diesem Grund schlagen dateibasierte OTAs auf einem Gerät mit aktivierter dm-verity fehl. Nach dem OTA-Versuch startet das Gerät nicht.

Bei einer blockbasierten OTA-Aktualisierung überträgt Android dem Gerät die Differenz zwischen den beiden Blockbildern (und nicht zwei Dateisätze). Bei der Aktualisierung wird ein Geräte-Build mit dem entsprechenden Build-Server auf Blockebene (unter dem Dateisystem) mit einer der folgenden Methoden verglichen:

  • Vollständige Aktualisierung Das Kopieren des vollständigen System-Images ist einfach und erleichtert die Patch-Generierung. Es werden jedoch große Images generiert, die die Anwendung von Patches teuer machen können.
  • Inkrementelle Aktualisierung Mit einem Tool zur binären Differenz werden kleinere Images generiert und die Patch-Anwendung wird vereinfacht. Das Erstellen des Patches selbst ist jedoch speicherintensiv.

Hinweis:adb fastboot platziert genau dieselben Bits auf dem Gerät wie ein vollständiges OTA-Update. Das Flashen ist daher mit Block-OTA-Updates kompatibel.

Unveränderte Systeme aktualisieren

Bei Geräten mit unveränderten Systempartitionen mit Android 5.0 ist der Download- und Installationsprozess für eine Block-OTA-Aktualisierung identisch mit dem für eine Datei-OTA-Aktualisierung. Das Over-the-air-Update selbst kann jedoch eine oder mehrere der folgenden Unterschiede aufweisen:

  • Downloadgröße

    OTA-Updates für vollständige Blöcke sind ungefähr so groß wie OTA-Updates für vollständige Dateien und inkrementelle Updates können nur wenige Megabyte größer sein.

    Vergleich der OTA-Größen

    Abbildung 1: Größe der OTA-Dateien für Nexus 6 bei Android 5.0 und Android 5.1 vergleichen (unterschiedliche Änderungen am Ziel-Build)

    Im Allgemeinen sind inkrementelle Block-OTA-Updates aufgrund der folgenden Gründe größer als inkrementelle Datei-OTA-Updates:

    • Datenerhaltung: Bei blockbasierten OTAs bleiben mehr Daten erhalten (Dateimetadaten, dm-verity-Daten, ext4-Layout usw.) als bei dateibasierten OTAs.
    • Unterschiede bei den Berechnungsalgorithmen Wenn bei einem OTA-Dateiupdate ein Dateipfad in beiden Builds identisch ist, enthält das OTA-Paket keine Daten für diese Datei. Bei einer blockbasierten OTA-Aktualisierung hängt die Feststellung, ob sich eine Datei nur geringfügig oder gar nicht geändert hat, von der Qualität des Algorithmus zur Berechnung des Patches und vom Layout der Dateidaten sowohl im Quell- als auch im Zielsystem ab.
  • Empfindlichkeit gegenüber fehlerhaftem Flash-Speicher und RAM Wenn eine Datei beschädigt ist, ist eine OTA-Dateiübertragung erfolgreich, solange sie die beschädigte Datei nicht berührt. Eine Block-OTA-Übertragung schlägt jedoch fehl, wenn eine Beschädigung der Systempartition erkannt wird.

Geänderte Systeme aktualisieren

Für Geräte mit modifizierten Systempartitionen mit Android 5.0:

  • Inkrementelle Block-OTA-Updates fehlschlagen Eine Systempartition kann während eines adb remount oder durch Malware geändert werden. Bei der Datei-OTA werden einige Änderungen an der Partition toleriert, z. B. das Hinzufügen von Dateien, die nicht Teil des Quell- oder Ziel-Builds sind. Bei der Blockierung von OTA-Updates werden jedoch keine Ergänzungen zur Partition toleriert. Daher müssen Nutzer ein vollständiges OTA-Update installieren, um alle Änderungen an der Systempartition zu überschreiben, oder ein neues System-Image flashen, um zukünftige OTA-Updates zu ermöglichen.
  • Versuche, geänderte Dateien zu ändern, führen zu einem Updatefehler. Sowohl bei Datei- als auch bei Block-OTA-Updates schlägt das OTA-Update fehl, wenn versucht wird, eine bereits geänderte Datei zu ändern.
  • Versuche, auf geänderte Dateien zuzugreifen, führen zu Fehlern (nur dm-verity). Sowohl bei Datei- als auch bei Block-OTA-Updates wird bei aktiviertem dm-verity ein Fehler generiert, wenn das OTA versucht, auf geänderte Teile des Systemdateisystems zuzugreifen.