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 açıldığında önyükleme yükleyici, kurtarma resmiyle uyumlu yer paylaşımı resmini yükleyebilir. A/B (seamless) güncellemeleri 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).
Açılış/kurtarma görüntüsünün bir parçası olarak kurtarma DTBO/ACPIO ekleme seçenekleri Android sürümleri arasında farklılık gösterir.
Sürüm | Şemayı güncelleme | GKI uygunluğu | Başlatma üst bilgisi sürümü (başlatılan cihazlar) | Önyükleme başlığı sürümü (cihazları yükseltme) | Özel bir 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 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 (K) | A/B | Yok | 1 | 0, 1 | Hayır |
A/B dışı | 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 dışı | 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ü'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 bölüm grubu (
boot
vedtbo
dahil) kullandığından ve güncellemeler sırasında bunlar arasında geçiş yaptığından A/B cihazlarda kurtarma resmi belirtmeniz gerekmez. Bu sayede kurtarma resmine ihtiyaç duymazsınız. A/B cihazlar özel bir kurtarma görüntüsünü kullanmaya devam edebilir.Android 11 veya sonraki sürümlerin yüklü olduğu ve 3 sürümüne sahip bir önyükleme başlığı kullanan A/B olmayan cihazlar, kurtarma resmi için ayrı olarak 2 sürümüne sahip bir önyükleme başlığı belirtmelidir. Ö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 resimleri 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 durumu yaşanabilir.
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, yer paylaşımlı resimdeki bilgileri içeren bir kurtarma DTBO/ACPIO görüntüsünü önyükleme görüntüsü biçiminde ayrı bir bölüm olarak belirtebilir (yükleme başlığı sürümü 1 veya 2 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 sayfa) | i = (recovery_[dtbo|acpio]_size + page_size -
1) / page_size |
Önyükleme resmi üstbilgi sürümünü ve yer paylaşımı resim 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 Resmi Üstbilgi Sürümü başlıklı makaleye bakın.
DTBO'yu uygulayın
9 veya sonraki bir sürümü çalıştıran A/B olmayan cihazlar kurtarma görüntüsünün recovery_dtbo
bölümünü doldurabilir. 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 görüntüsünün yoluna ayarlandığından emin olun. 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şkenleri doğru şekilde ayarlanmışsa Android derleme sistemi, recovery.img
içinde BOARD_PREBUILT_DTBOIMAGE
değişkeni tarafından belirtilen DTBO'yu içerir.
ACPIO'yu uygulama
Android 9 veya sonraki sürümleri çalıştıran A/B olmayan cihazlar, DTBO görüntüsü yerine ACPIO yer paylaşımlı görüntüsü 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 BoardConfig.mk
cihazında:
BOARD_INCLUDE_RECOVERY_ACPIO
yapılandırmasınıtrue
olarak ayarlayın:BOARD_INCLUDE_RECOVERY_ACPIO := true
Önyükleme resmi üstbilgi sürümünü belirtmek için
BOARD_MKBOOTIMG_ARGS
değişkenini genişletin. 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, APCIO resminin yoluna ayarlandığından emin olun. 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şkenleri doğru şekilde ayarlanırsa Android derleme sistemi, recovery.img
içinde BOARD_RECOVERY_ACPIO
değişkeni tarafından belirtilen ACPIO'yu içerir.