Kurtarma resimleri

A/B olmayan cihazlarda kurtarma görüntüsü, cihaz ağacı blobu (DTB) veya Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) yer paylaşımı görüntüsünden alınan bilgileri içermelidir. Bu tür cihazlar kurtarma modunda başlatıldığında, önyükleyici kurtarma görüntüsüyle uyumlu olan yer paylaşımı görüntüsünü yükleyebilir. A/B (sorunsuz) güncellemelerini 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).

Başlatma/kurtarma görüntüsüne kurtarma DTBO/ACPIO'sunu dahil etme seçenekleri Android sürümlerine göre farklılık gösterir.

Sürüm Şemayı güncelleme GKI uygunluğu Başlatma başlığı sürümü (başlatılan cihazlar) Başlatma 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 olmayan Evet 3 Yok Evet
A/B olmayan Hayır 2, 3 0, 1, 2, 3 Evet
10 (Q) A/B Yok 2 0, 1, 2 Hayır
A/B olmayan Yok 2 0, 1, 2 Evet
9 (P) A/B Yok 1 0, 1 Hayır
A/B olmayan 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 olmayan 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ü (GKI) kullanan A/B cihazların, tedarikçi önyükleme bölümü ile uyumlu olması için 3 birincil önyükleme başlığı sürümünü kullanması gerekir.

Önemli noktalar:

  • A/B cihazların kurtarma görüntüsü belirtmesi gerekmez. A/B güncellemeleri, iki bölüm grubu (boot ve dtbo dahil) kullanır ve güncellemeler sırasında bunlar arasında geçiş yapar. Bu sayede kurtarma görüntüsüne gerek kalmaz. A/B cihazlar, özel bir kurtarma görüntüsü kullanmaya devam edebilir.

  • Android 11 veya sonraki sürümlerle başlatılan ve önyükleme başlığı sürümü 3'ü kullanan A/B olmayan cihazlar, kurtarma görüntüsü için önyükleme başlığı sürümü 2'yi ayrı olarak açıkça belirtmelidir. Örneğin:

    BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
    
  • Cihaz ağaçlarını desteklemeyen mimarilerde 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) hatalarını önlemek için kurtarma görüntüsünün kendi kendine yeterli olması ve diğer görüntülerden bağımsız olması gerekir. OTA güncellemesi sırasında, yer paylaşımı görüntüsü güncellendikten sonra (ancak tam güncelleme tamamlanmadan önce) bir sorun oluşursa cihaz, OTA güncellemesini tamamlamak için kurtarma modunda başlatılmaya çalışır. Ancak, yer paylaşımı bölümü zaten güncellendiğinden kurtarma görüntüsüyle (henüz güncellenmemiş olan) bir uyuşmazlık oluşabilir.

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 görüntüsü biçiminde ayrı bir bölüm olarak yer paylaşımı görüntüsündeki bilgileri içeren bir kurtarma DTBO/ACPIO görüntüsü belirtebilir (1 veya 2 sürümünde bir önyükleme üstbilgisi kullanılmalıdır).

Başlatma görüntüsü değişiklikleri

Android 9 veya sonraki sürümlerin yüklü olduğu A/B olmayan cihazlarda kurtarma görüntüsünün kurtarma DTBO'sunu veya ACPIO'sunu içermesine izin vermek için önyükleme görüntüsü 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'su veya ACPIO'su (o sayfa) o = (recovery_[dtbo|acpio]_size + page_size - 1) / page_size

Önyükleme görüntüsü üstbilgi sürümünü ve yer paylaşımı görüntüsü yollarını belirtmek için kullanılan mkbootimg aracı bağımsız değişkenleri hakkında ayrıntılı bilgi için Önyükleme Görüntüsü Üstbilgi Sürümü Oluşturma başlıklı makaleyi inceleyin.

DTBO'yu uygulama

9 veya daha yeni bir sürümün yüklü olduğu A/B olmayan cihazlar, kurtarma görüntüsünün recovery_dtbo bölümünü doldurabilir. recovery_dtbo resmini recovery.img'e eklemek için cihazda BoardConfig.mk:

  • Yapılandırmayı BOARD_INCLUDE_RECOVERY_DTBO olarak ayarlayın:true

     BOARD_INCLUDE_RECOVERY_DTBO := true
    
  • Başlatma görüntüsü üstbilgi 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ü oluşturulurken 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 ayarlanırsa Android derleme sistemi, BOARD_PREBUILT_DTBOIMAGE değişkeni tarafından belirtilen DTBO'yu recovery.img'e dahil eder.

ACPIO'yu uygulama

Android 9 veya sonraki sürümlerin yüklü olduğu A/B olmayan cihazlar, 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 resmini recovery.img'e dahil etmek için cihazda BoardConfig.mk:

  • Yapılandırmayı BOARD_INCLUDE_RECOVERY_ACPIO olarak ayarlayın:true

    BOARD_INCLUDE_RECOVERY_ACPIO := true
    
  • Önyükleme görüntüsü üstbilgi sürümünü belirtmek için BOARD_MKBOOTIMG_ARGS değişkenini genişletin. Kurtarma ACPIO'yu desteklemek için değişken 1'e eşit veya 1'den büyük olmalıdır.

    BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
    
  • BOARD_RECOVERY_ACPIO değişkeninin ACPIO görüntüsünün yolu olarak ayarlandığından emin olun. Android derleme sistemi, kurtarma görüntüsü oluşturulurken 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 ayarlanırsa Android derleme sistemi, BOARD_RECOVERY_ACPIO değişkeni tarafından belirtilen ACPIO'yu recovery.img'e dahil eder.