Blok tabanlı OTA'lar

Android 5.0 çalıştıran yeni cihazlar için blok tabanlı kablosuz (OTA) güncellemeleri etkinleştirebilirsiniz. OTA, OEM'lerin bir cihazın sistem bölümünü uzaktan güncellemesini sağlayan mekanizmadır:

  • Android 5.0 ve sonraki sürümler, her cihazın tam olarak aynı bölümü kullanmasını sağlamak için blok OTA güncellemelerini kullanır. Tek tek dosyaları karşılaştırmak ve ikili yamaları hesaplamak yerine, blok OTA tüm bölümü tek bir dosya olarak ele alır ve tek bir ikili yama hesaplayarak sonuçtaki bölümün tam olarak amaçlanan bitleri içermesini sağlar. Bu, cihaz sistem görüntüsünün fastboot veya OTA aracılığıyla aynı duruma ulaşmasını sağlar.
  • Android 4.4 ve önceki sürümler, cihazların benzer dosya içerikleri, izinler ve modlar içermesini sağlayan, ancak zaman damgaları ve temel depolama düzeni gibi meta verilerin güncelleme yöntemine göre cihazlar arasında farklılık göstermesine izin veren dosya OTA güncellemelerini kullanıyordu.

Blok OTA, her cihazın aynı bölümü kullanmasını sağladığından, sistem bölümünü kriptografik olarak imzalamak için dm-verity kullanımına olanak tanır. dm-verity ile ilgili ayrıntılar için bkz. Doğrulanmış Önyükleme .

Not: dm-verity'yi kullanmadan önce çalışan bir blok OTA sistemine sahip olmanız gerekir.

Öneriler

Android 5.0 veya sonraki sürümlerle başlatılan cihazlar için fabrika ROM'undaki blok OTA güncellemelerini kullanın. Sonraki güncellemeler için blok tabanlı bir OTA oluşturmak için --block seçeneğini ota_from_target_files iletin.

Android 4.4 veya daha eski bir sürümle başlatılan cihazlar için OTA güncellemelerini kullanın. Android 5.0 veya sonraki sürümlerde tam blok OTA göndererek cihazlar arasında geçiş yapmak mümkün olsa da, artımlı OTA'dan önemli ölçüde daha büyük bir tam OTA gönderilmesini gerektirir (ve bu nedenle önerilmez).

Dm-verity, yalnızca Android 5.0 veya sonraki sürümlerle birlikte gönderilen yeni cihazlarda bulunan önyükleyici desteğini gerektirdiğinden, mevcut cihazlar için dm-verity'yi etkinleştiremezsiniz .

Android OTA sistemi (kurtarma görüntüsü ve OTA'ları oluşturan komut dosyaları) üzerinde çalışan geliştiriciler, android-ota@googlegroups.com posta listesine abone olarak değişiklikleri takip edebilir.

Dosya ve blok OTA'lar

Dosya tabanlı bir OTA sırasında Android, dosya sistemi katmanındaki sistem bölümünün içeriğini (dosya bazında) değiştirmeye çalışır. Güncellemenin, dosyaları tutarlı bir sırayla yazacağı, tutarlı bir son değiştirilme zamanına veya süper bloğa sahip olacağı ve hatta blokları blok cihazında aynı konuma yerleştireceği garanti edilmez. Bu nedenle, dosya tabanlı OTA'lar dm-verity özellikli bir cihazda başarısız olur; OTA denemesinden sonra cihaz önyükleme yapmıyor.

Blok tabanlı bir OTA sırasında Android, cihaza iki blok görüntüsü arasındaki farkı (iki dosya kümesi yerine) sunar. Güncelleme, aşağıdaki yöntemlerden birini kullanarak bir cihaz yapısını blok düzeyinde (dosya sisteminin altında) ilgili yapı sunucusuna göre kontrol eder:

  • Tam güncelleme . Tam sistem görüntüsünün kopyalanması basittir ve yama oluşturmayı kolaylaştırır, ancak aynı zamanda yamaların uygulanmasını pahalı hale getirebilecek büyük görüntüler de oluşturur.
  • Artımlı güncelleme . İkili farklılaştırma aracının kullanılması daha küçük görüntüler oluşturur ve yama uygulamasını kolaylaştırır, ancak yamanın kendisi oluşturulurken yoğun bellek kullanılır.

Not: adb fastboot cihaza tam OTA ile aynı bitleri yerleştirir, dolayısıyla yanıp sönme blok OTA ile uyumludur.

Değiştirilmemiş sistemleri güncelleyin

Android 5.0 çalıştıran, değiştirilmemiş sistem bölümlerine sahip cihazlar için, blok OTA'nın indirme ve yükleme işlemi, dosya OTA'sı ile aynı kalır. Ancak OTA güncellemesinin kendisi aşağıdaki farklılıklardan bir veya daha fazlasını içerebilir:

  • Boyutu indirin . Tam blok OTA güncellemeleri, tam dosya OTA güncellemeleriyle yaklaşık olarak aynı boyuttadır ve artımlı güncellemeler yalnızca birkaç megabayt daha büyük olabilir.

    OTA boyutlarının karşılaştırılması

    Şekil 1. Android 5.0 ve Android 5.1 sürümleri arasındaki Nexus 6 OTA boyutlarını karşılaştırın (değişen hedef derleme değişiklikleri)

    Genel olarak artımlı blok OTA güncellemeleri, aşağıdaki nedenlerden dolayı artımlı dosya OTA güncellemelerinden daha büyüktür:

    • Verilerin korunması . Blok tabanlı OTA'lar, dosya tabanlı OTA'ya göre daha fazla veriyi (dosya meta verileri, dm-verity verileri, ext4 düzeni vb.) korur.
    • Hesaplama algoritması farklılıkları . Bir dosya OTA güncellemesinde, bir dosya yolu her iki yapıda da aynıysa, OTA paketi o dosya için veri içermez. Bir blok OTA güncellemesinde, bir dosyada çok az değişiklik olduğunu veya hiç değişiklik olmadığını belirlemek, yama hesaplama algoritmasının kalitesine ve hem kaynak hem de hedef sistemdeki dosya verilerinin düzenine bağlıdır.
  • Arızalı flaş ve RAM'e duyarlılık . Bir dosya bozuksa, bir dosya OTA, bozuk dosyaya dokunmadığı sürece başarılı olur, ancak bir blok OTA, sistem bölümünde herhangi bir bozulma tespit ederse başarısız olur.

Değiştirilen sistemleri güncelle

Android 5.0 çalıştıran değiştirilmiş sistem bölümlerine sahip cihazlar için:

  • Artımlı blok OTA güncellemeleri başarısız oluyor . Bir sistem bölümü, adb remount sırasında veya kötü amaçlı yazılımların bir sonucu olarak değiştirilebilir. Dosya OTA, kaynak veya hedef yapının parçası olmayan dosyaların eklenmesi gibi bölümdeki bazı değişiklikleri tolere eder. Ancak blok OTA, bölüme ekleme yapılmasına tolerans göstermez; bu nedenle kullanıcıların, gelecekteki OTA'ları etkinleştirmek için herhangi bir sistem bölümü değişikliğinin üzerine yazarak tam bir OTA yüklemeleri veya yeni bir sistem görüntüsünü flaş etmeleri gerekecektir.
  • Değiştirilen dosyaları değiştirme girişimleri güncelleme hatasına neden olur . Hem dosya hem de blok OTA güncellemeleri için, OTA değiştirilmiş bir dosyayı değiştirmeye çalışırsa OTA güncellemesi başarısız olur.
  • Değiştirilen dosyalara erişme girişimleri hatalara neden olur (yalnızca dm-verity) . Hem dosya hem de blok OTA güncellemeleri için, dm-verity etkinleştirilirse ve OTA, sistem dosya sisteminin değiştirilmiş bölümlerine erişmeye çalışırsa OTA bir hata oluşturur.