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).
Önyükleme/kurtarma görüntüsüne kurtarma DTBO/ACPIO ekleme seçenekleri Android sürümlerine göre farklılık gösterir.
| Sürüm | Güncelleme şeması | 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çersiz (0 olarak kabul edilir) | Geçersiz (0 olarak kabul edilir) | Hayır |
| A/B olmayan | Yok | Geçersiz (0 olarak kabul edilir) | Geçersiz (0 olarak kabul edilir) | Evet |
* Android 11 veya sonraki sürümlerin yüklü olduğu ve Genel Çekirdek Görüntüsü (GKI)'nü 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 güncellemeleri iki bölüm grubu (
bootvedtbodahil) kullandığından ve güncellemeler sırasında bunlar arasında geçiş yaptığından A/B cihazların kurtarma görüntüsü belirtmesi gerekmez. Bu sayede kurtarma görüntüsüne ihtiyaç duyulmaz. A/B cihazlar, özel bir kurtarma görüntüsü kullanmaya devam edebilir.Android 11 veya sonraki sürümlerle başlatılan ve 3 önyükleme başlığı sürümünü kullanan A/B olmayan cihazlar, kurtarma görüntüsü için 2 önyükleme başlığı sürümünü ayrı olarak 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 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 kullanmalı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 DTBO'sunun veya ACPIO'nun kurtarma görüntüsünde yer almasına izin vermek için önyükleme görüntüsü yapısını aşağıdaki gibi güncelleyin.
| Başlatma görüntüsü bölümü | Sayfa sayısı |
|---|---|
| Başlatma üstbilgisi (1 sayfa) | 1 |
| Kernel (l pages) | 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 (0 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 araç 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 := trueÖnyükleme 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, DTBO görüntüsü yerine ACPIO yer paylaşımı görüntüsü kullanabilir ve kurtarma görüntüsünün recovery_dtbo bölümü yerine recovery_acpio bölümünü 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. Değişken, ACPIO kurtarmayı desteklemek için 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'ye dahil eder.