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 (
bootvedtbodahil) 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 2Cihaz 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_DTBOolarak ayarlayın:trueBOARD_INCLUDE_RECOVERY_DTBO := trueBaşlatma görüntüsü üstbilgi sürümünü belirtmek için
BOARD_MKBOOTIMG_ARGSdeğ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_DTBOIMAGEdeğişkeninin DTBO görüntüsünün yoluna ayarlandığından emin olun. Android derleme sistemi, kurtarma görüntüsü oluşturulurkenmkbootimgaracınınrecovery_dtbobağı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_ACPIOolarak ayarlayın:trueBOARD_INCLUDE_RECOVERY_ACPIO := trueÖnyükleme görüntüsü üstbilgi sürümünü belirtmek için
BOARD_MKBOOTIMG_ARGSdeğ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_ACPIOdeğişkeninin ACPIO görüntüsünün yolu olarak ayarlandığından emin olun. Android derleme sistemi, kurtarma görüntüsü oluşturulurkenmkbootimgaracınınrecovery_acpiobağı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.