Kurtarma resimleri

A/B olmayan cihazlarda, kurtarma resmi bir cihaz ağacı blob'undan (DTB) veya Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) yer paylaşımı resminden bilgi içermelidir. Bu tür cihazlar kurtarma moduna açıldığında önyükleme yükleyici, kurtarma resmiyle uyumlu yer paylaşımı resmini yükleyebilir. A/B (seamless) güncellemeleri destekleyen cihazlar, ayrı bir kurtarma bölümü yerine önyükleme olarak kurtarma bölümünü kullanmalıdır (ayrıntılar için A/B Güncellemelerini Uygulama başlıklı makaleyi inceleyin).

Açılış/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.

Sürüm Şemayı güncelleme GKI uygunluğu Önyükleme başlığı sürümü (cihazları başlatma) Önyükleme başlığı sürümü (cihazları yükseltme) Özel kurtarma görüntüsü gerekli
11 A/B,
Sanal A/B
Evet 3* Yok Hayır
A/B,
Sanal A/B
Hayır 2, 3 0, 1, 2, 3 Hayır
A/B dışı Evet 3 Yok Evet
A/B dışı Hayır 2, 3 0, 1, 2, 3 Evet
10 (Q) A/B Yok 2 0, 1, 2 Hayır
A/B dışı Yok 2 0, 1, 2 Evet
9 (P) A/B Yok 1 0, 1 Hayır
A/B dışı Yok 1 0, 1 Evet
8 (O) A/B Yok Geçerli değil (0 olarak kabul edilir) Geçerli değil (0 olarak kabul edilir) Hayır
A/B dışı Yok Geçerli değil (0 olarak kabul edilir) Geçerli değil (0 olarak kabul edilir) Evet

* Android 11 veya sonraki sürümleri çalıştıran ve Genel Çekirdek Görüntüsü'nü (GKI) kullanan A/B cihazlar, tedarikçi firma önyükleme bölümüyle uyumlu olmak için birincil 3 numaralı önyükleme başlığı sürümünü kullanmalıdır.

Önemli noktalar:

  • A/B güncellemeleri iki bölüm grubu (boot ve dtbo dahil) kullandığından ve güncellemeler sırasında bunlar arasında geçiş yaptığından A/B cihazlarda kurtarma resmi belirtmeniz gerekmez. Bu sayede kurtarma resmine ihtiyaç duymazsınız. A/B cihazlar özel bir kurtarma görüntüsünü kullanmaya devam edebilir.

  • Android 11 veya sonraki sürümlerin yüklü olduğu ve 3 sürümüne sahip bir önyükleme başlığı kullanan A/B olmayan cihazlar, kurtarma resmi için ayrı olarak 2 sürümüne sahip bir önyükleme başlığı açıkça belirtmelidir. Örnek:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • Cihaz ağaçlarını desteklemeyen mimarilerde, kurtarma resmi DTBO resmi yerine ACPIO resmi içerebilir.

OTA hataları ve kurtarma resimleri hakkında

A/B olmayan cihazlarda kablosuz (OTA) hataları önlemek için kurtarma resmi kendi kendine yeterli ve diğer resimlerden bağımsız olmalıdır. OTA güncellemesi sırasında, yer paylaşımı resmi güncellendikten sonra (ancak tam güncellemenin tamamlanmasından önce) bir sorun oluşursa cihaz, OTA güncellemesini tamamlamak için kurtarma modunda önyükleme yapmayı dener. Ancak yer paylaşımı bölümü zaten güncellendiğinden, henüz güncellenmemiş olan kurtarma resmiyle eşleşmeme durumu yaşanabilir.

Güncelleme sırasında kurtarma işleminin DTBO/ACPIO bölümüne bağlı olmasını önlemek için Android 9 veya sonraki sürümleri çalıştıran A/B olmayan cihazlar, önyükleme resmi biçiminde ayrı bir bölüm olarak yer paylaşımı resmindeki bilgileri içeren bir kurtarma DTBO/ACPIO resmi belirtebilir (1 veya 2 sürümlü bir önyükleme başlığı kullanılmalıdır).

Önyükleme resmi değişiklikleri

Android 9 veya sonraki sürümleri çalıştıran A/B olmayan cihazlarda kurtarma resminin kurtarma DTBO'sunu veya ACPIO'yu içermesine izin vermek için önyükleme resmi yapısını aşağıdaki gibi güncelleyin.

Önyükleme görüntüsü bölümü Sayfa sayısı
Başlatma üstbilgisi (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 bootloader (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 resmi üstbilgi sürümünü ve yer paylaşımı resim yollarını belirtmek için kullanılan mkbootimg araç bağımsız değişkenleri hakkında ayrıntılı bilgi için Önyükleme Resmi Üstbilgi Sürümü başlıklı makaleye bakın.

DTBO'yu uygulama

A/B olmayan ve 9 veya sonraki sürümleri çalıştıran cihazlar, kurtarma görüntüsünün recovery_dtbo bölümünü doldurabilir. recovery_dtbo resmini recovery.img'e dahil etmek için BoardConfig.mk cihazında:

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

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • BOARD_MKBOOTIMG_ARGS değişkenini, önyükleme resmi üstbilgi sürümünü belirtecek şekilde 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 resminin 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 bu 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 içinde BOARD_PREBUILT_DTBOIMAGE değişkeni tarafından belirtilen DTBO'yu içerir.

ACPIO'yu uygulama

Android 9 veya sonraki sürümleri çalıştıran A/B olmayan cihazlar, DTBO resmi yerine ACPIO yer paylaşımlı resmi kullanabilir ve kurtarma resminin recovery_dtbo bölümünün yerine recovery_acpio bölümünü doldurabilir. recovery_acpio resmini recovery.img'e dahil etmek için BoardConfig.mk cihazında:

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

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • Önyükleme resmi üstbilgi sürümünü belirtmek için BOARD_MKBOOTIMG_ARGS değişkenini genişletin. Değişken, ACPIO'nun kurtarılmasını desteklemek için 1 veya daha büyük olmalıdır.

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_RECOVERY_ACPIO değişkeninin, APCIO resminin 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 bu değişkeni kullanır.

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