Kurtarma Görüntüleri

A/B olmayan cihazlarda kurtarma görüntüsü, bir aygıt ağacı bloğundan (DTB) veya Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) yer paylaşımı görüntüsünden bilgi içermelidir. Bu tür cihazlar kurtarma işlemine önyüklendiğinde, önyükleyici daha sonra kurtarma görüntüsüyle uyumlu kaplama görüntüsünü yükleyebilir. A/B (kesintisiz) güncellemelerini destekleyen cihazlar, ayrı bir kurtarma bölümü yerine önyükleme olarak kurtarmayı kullanmalıdır (ayrıntılar için bkz. A/B Güncellemelerini Uygulama ).

Önyükleme/kurtarma görüntüsünün bir parçası olarak kurtarma DTBO/ACPIO ekleme seçenekleri Android sürümleri arasında farklılık gösterir.

Serbest bırakmak Şemayı güncelle GKI uyumluluğu Önyükleme başlığı sürümü (cihazları başlatma) Önyükleme başlığı sürümü (aygıtların yükseltilmesi) Özel kurtarma görüntüsü gerekli
11 A/B,
Sanal A/B
Evet 3 * Yok HAYIR
A/B,
Sanal A/B
HAYIR 2, 3 0, 1, 2, 3 HAYIR
A/B olmayan Evet 3 Yok Evet
A/B olmayan HAYIR 2, 3 0, 1, 2, 3 Evet
10 (S) A/B Yok 2 0, 1, 2 HAYIR
A/B olmayan Yok 2 0, 1, 2 Evet
9 (P) A/B Yok 1 0, 1 HAYIR
A/B olmayan Yok 1 0, 1 Evet
8 (O) A/B Yok Yok (0 olarak kabul edilir) Yok (0 olarak kabul edilir) HAYIR
A/B olmayan Yok Yok (0 olarak kabul edilir) Yok (0 olarak kabul edilir) Evet

* Android 11 veya üstünü çalıştıran ve Genel Çekirdek Görüntüsü (GKI) kullanan A/B cihazları , satıcının önyükleme bölümüyle uyumlu olması için birincil önyükleme üstbilgisi sürümü 3'ü kullanmalıdır.

Anahtar noktaları:

  • A/B güncellemeleri iki bölüm kümesi ( boot ve dtbo dahil) kullandığından ve güncellemeler sırasında bunlar arasında geçiş yaparak kurtarma görüntüsü ihtiyacını ortadan kaldırdığından, A/B cihazlarının bir kurtarma görüntüsü belirtmesine gerek yoktur. İstenirse A/B cihazları yine de özel bir kurtarma görüntüsü kullanabilir.

  • Android 11 veya sonraki bir sürümle başlatılan ve önyükleme üstbilgisi sürümü 3'ü kullanan A/B olmayan cihazların, kurtarma görüntüsü için ayrıca açık bir şekilde 2 önyükleme üstbilgisi sürümü belirtmesi gerekir. Örneğin:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • Cihaz ağaçlarını desteklemeyen mimariler için kurtarma görüntüsü, DTBO görüntüsü yerine ACPIO görüntüsü içerebilir.

OTA hataları ve kurtarma görüntüleri hakkında

A/B olmayan cihazlarda kablosuz (OTA) arızaları önlemek için kurtarma görüntüsünün kendi kendine yeterli ve diğer görüntülerden bağımsız olması gerekir. Bir OTA güncellemesi sırasında, kaplama görüntüsü güncellendikten sonra (ancak tam güncelleme tamamlanmadan önce) bir sorun meydana gelirse cihaz, OTA güncellemesini tamamlamak için kurtarma modunda önyükleme yapmaya çalışır. Ancak kaplama bölümü zaten güncellendiğinden kurtarma görüntüsünde (henüz güncellenmemiş) bir uyumsuzluk meydana gelebilir.

Güncelleme sırasında kurtarma işleminin DTBO/ACPIO bölümüne bağlı olmasını önlemek için, Android 9 veya üstünü çalıştıran A/B olmayan cihazlar, önyükleme görüntüsü formatında ayrı bir bölüm olarak kaplama görüntüsünden bilgiler içeren bir kurtarma DTBO/ACPIO görüntüsü belirtebilir ( 1 veya 2'lik bir önyükleme başlığı sürümü kullanmalısınız).

Önyükleme görüntüsü değişiklikleri

Kurtarma görüntüsünün, Android 9 veya üstünü çalıştıran A/B olmayan cihazlarda kurtarma DTBO veya ACPIO'yu içermesine izin vermek için önyükleme görüntüsü yapısını aşağıdaki şekilde güncelleyin.

Önyükleme görüntüsü bölümü Sayfa sayısı
Önyükleme başlığı (1 sayfa) 1
Çekirdek (l sayfa) l = ( kernel_size + page_size - 1) / page_size
Ramdisk (m sayfa) m = ( ramdisk_size + page_size - 1) / page_size
İkinci aşama önyükleyici (n sayfa) n = ( second_size + page_size - 1) / page_size
Kurtarma DTBO veya ACPIO (o sayfalar) o = ( recovery_[dtbo|acpio]_size + page_size - 1) / page_size

Önyükleme görüntüsü üstbilgisi sürümünü ve kaplama görüntüsü yollarını belirlemeye yönelik mkbootimg aracı bağımsız değişkenleri hakkında ayrıntılar için bkz . Önyükleme Görüntüsü Üstbilgisi Sürümü Oluşturma .

DTBO'nun uygulanması

9 veya üzerini çalıştıran A/B olmayan cihazlar, kurtarma görüntüsünün recovery_dtbo bölümünü doldurabilir. recovery_dtbo görüntüsünü recovery.img dosyasına, BoardConfig.mk aygıtına eklemek için:

  • BOARD_INCLUDE_RECOVERY_DTBO yapılandırmasını true olarak ayarlayın:

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • Önyükleme görüntüsü üst bilgisi sürümünü belirtmek için BOARD_MKBOOTIMG_ARGS değişkenini genişletin:

    BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_PREBUILT_DTBOIMAGE değişkeninin DTBO görüntüsünün yoluna ayarlandığından emin olun. Android derleme sistemi, kurtarma görüntüsünün oluşturulması sırasında mkbootimg aracının recovery_dtbo bağımsız değişkenini ayarlamak için değişkeni kullanır.

BOARD_INCLUDE_RECOVERY_DTBO , BOARD_MKBOOTIMG_ARGS ve BOARD_PREBUILT_DTBOIMAGE değişkenleri doğru şekilde ayarlanmışsa, Android derleme sistemi, recovery.img dosyasındaki BOARD_PREBUILT_DTBOIMAGE değişkeni tarafından belirtilen DTBO'yu içerir.

ACPIO'nun Uygulanması

Android 9 veya üstünü çalıştıran A/B olmayan cihazlar, bir ACPIO yer paylaşımı görüntüsü (DTBO görüntüsü yerine) kullanabilir ve kurtarma görüntüsünün recovery_acpio bölümünü ( recovery_dtbo bölümü yerine) doldurabilir. recovery_acpio görüntüsünü recovery.img dosyasına, BoardConfig.mk aygıtına eklemek için:

  • BOARD_INCLUDE_RECOVERY_ACPIO yapılandırmasını true olarak ayarlayın:

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • Önyükleme görüntüsü üst bilgisi sürümünü belirtmek için BOARD_MKBOOTIMG_ARGS değişkenini genişletin. ACPIO kurtarmayı desteklemek için değişkenin 1'den büyük veya 1'e eşit olması gerekir.

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_RECOVERY_ACPIO değişkeninin ACPIO görüntüsünün yoluna ayarlandığından emin olun. Android derleme sistemi, kurtarma görüntüsünün oluşturulması sırasında mkbootimg aracının recovery_acpio bağımsız değişkenini ayarlamak için değişkeni kullanır.

BOARD_INCLUDE_RECOVERY_ACPIO , BOARD_MKBOOTIMG_ARGS ve BOARD_RECOVERY_ACPIO değişkenleri doğru şekilde ayarlanmışsa, Android derleme sistemi, recovery.img dosyasındaki BOARD_RECOVERY_ACPIO değişkeni tarafından belirtilen ACPIO'yu içerir.