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 geçtiğinde önyükleyici, kurtarma resmiyle uyumlu yer paylaşımı resmini yükleyebilir. A/B'yi (kusursuz) destekleyen cihazlar güncellemelerin kurtarma işlemini önyükleme olarak değil, ayrı kurtarma bölümü (ayrıntılar için bkz. A/B'yi Uygulama Güncellemeler) tıklayın.
Başlatma/kurtarma işleminin bir parçası olarak kurtarma DTBO/ACPIO ekleme seçenekleri resim farkı var.
Sürüm | Şemayı güncelle | GKI uygunluğu | Başlatma üst bilgisi sürümü (başlatılan cihazlar) | Başlatma üstbilgisi sürümü (cihazlar yeni sürüme geçiriliyor) | Ö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 (Ç) | 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 (D) | A/B | Yok | Geçerli değil (0 olarak kabul edilir) | Yok (0 olarak kabul edilir) | Hayır |
A/B dışı | Yok | Geçerli değil (0 olarak kabul edilir) | Yok (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 grup kullandığından A/B cihazlarının bir kurtarma görüntüsü belirtmesi gerekmez (
boot
vedtbo
dahil) devam edebilir ve Bu sayede kurtarma görüntüsü alma ihtiyacını ortadan kaldırabilirsiniz. A/B cihazları kullanmaya devam edebilirsiniz.Android 11 veya sonraki sürümlerin yüklü olduğu, A/B olmayan cihazlar ve 3 başlatma üstbilgisi sürümü kullanıldığında, açıkça bir açılış üstbilgisi sürüm 2 için ayrı ayrı ekleyebilirsiniz. Ö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 görüntüleri hakkında
A/B olmayan cihazlarda kablosuz (OTA) hataları ö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ı 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ü daha önce güncellendiği için henüz güncellenmemiş olan kurtarma resmiyle eşleşmeme olabilir.
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) | i = (recovery_[dtbo|acpio]_size + page_size -
1) / page_size |
Başlatma görüntüsünü belirtmeye yönelik mkbootimg
aracı bağımsız değişkenleriyle ilgili ayrıntılar için
üst bilgi sürümü ve bindirme görüntüsü yolları için Önyükleme Resmi Üstbilgisi
Sürüm oluşturma.
DTBO'yu uygulama
9 veya sonraki bir sürümü çalıştıran A/B olmayan cihazlar
recovery_dtbo
bölümüne gidin. 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 resmi. Android derleme sistemi, kurtarma görüntüsünün oluşturulması sırasındamkbootimg
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şken doğru şekilde ayarlandı, Android derleme sistemi
içindeki BOARD_PREBUILT_DTBOIMAGE
değişkeni tarafından belirtilen DTBO'yu
recovery.img
.
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
içine eklemek için
BoardConfig.mk
cihazı:
BOARD_INCLUDE_RECOVERY_ACPIO
yapılandırmasınıtrue
olarak ayarlayın:BOARD_INCLUDE_RECOVERY_ACPIO := true
Başlatma görüntüsü başlığını belirtmek için
BOARD_MKBOOTIMG_ARGS
değişkenini genişletin sürümünü değil. Değişken, ACPIO'nun kurtarılmasını desteklemek için 1'den büyük veya 1'e eşit olmalıdır.BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
BOARD_RECOVERY_ACPIO
değişkeninin ACPIO resmi. Android derleme sistemi, kurtarma görüntüsünün oluşturulması sırasındamkbootimg
aracınınrecovery_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şken doğru şekilde ayarlandı, Android derleme sistemi
içindeki BOARD_RECOVERY_ACPIO
değişkeni tarafından belirtilen ACPIO
recovery.img
.