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
vedtbo
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şturulurkenmkbootimg
aracınınrecovery_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şturulurkenmkbootimg
aracınınrecovery_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.