A/B olmayan cihazlarda kurtarma görüntüsü, bir aygıt ağacı bloğundan (DTB) veya Gelişmiş Yapılandırma ve Güç Arayüzü (ACPI) yer paylaşımı görüntüsünden bilgi içermelidir. Bu tür cihazlar kurtarma işlemine önyüklendiğinde, önyükleyici daha sonra kurtarma görüntüsüyle uyumlu kaplama görüntüsünü yükleyebilir. A/B (kesintisiz) güncellemelerini destekleyen cihazlar, ayrı bir kurtarma bölümü yerine önyükleme olarak kurtarmayı kullanmalıdır (ayrıntılar için bkz. A/B Güncellemelerini Uygulama ).
Önyükleme/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.
Serbest bırakmak | Şemayı güncelle | GKI uyumluluğu | Önyükleme başlığı sürümü (cihazları başlatma) | Önyükleme başlığı sürümü (aygıtların yükseltilmesi) | Özel kurtarma görüntüsü gerekli |
---|---|---|---|---|---|
11 | A/B, Sanal A/B | Evet | 3 * | Yok | HAYIR |
A/B, Sanal A/B | HAYIR | 2, 3 | 0, 1, 2, 3 | HAYIR | |
A/B olmayan | Evet | 3 | Yok | Evet | |
A/B olmayan | HAYIR | 2, 3 | 0, 1, 2, 3 | Evet | |
10 (S) | A/B | Yok | 2 | 0, 1, 2 | HAYIR |
A/B olmayan | Yok | 2 | 0, 1, 2 | Evet | |
9 (P) | A/B | Yok | 1 | 0, 1 | HAYIR |
A/B olmayan | Yok | 1 | 0, 1 | Evet | |
8 (O) | A/B | Yok | Yok (0 olarak kabul edilir) | Yok (0 olarak kabul edilir) | HAYIR |
A/B olmayan | Yok | Yok (0 olarak kabul edilir) | Yok (0 olarak kabul edilir) | Evet |
* Android 11 veya üstünü çalıştıran ve Genel Çekirdek Görüntüsü (GKI) kullanan A/B cihazları , satıcının önyükleme bölümüyle uyumlu olması için birincil önyükleme üstbilgisi sürümü 3'ü kullanmalıdır.
Anahtar noktaları:
A/B güncellemeleri iki bölüm kümesi (
boot
vedtbo
dahil) kullandığından ve güncellemeler sırasında bunlar arasında geçiş yaparak kurtarma görüntüsü ihtiyacını ortadan kaldırdığından, A/B cihazlarının bir kurtarma görüntüsü belirtmesine gerek yoktur. İstenirse A/B cihazları yine de özel bir kurtarma görüntüsü kullanabilir.Android 11 veya sonraki bir sürümle başlatılan ve önyükleme üstbilgisi sürümü 3'ü kullanan A/B olmayan cihazların, kurtarma görüntüsü için ayrıca açık bir şekilde 2 önyükleme üstbilgisi sürümü belirtmesi gerekir. Örneğin:
BOARD_RECOVERY_MKBOOTIMG_ARGS := --header_version 2
Cihaz ağaçlarını desteklemeyen mimariler için 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) arızaları ö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. Bir OTA güncellemesi sırasında, kaplama görüntüsü güncellendikten sonra (ancak tam güncelleme tamamlanmadan önce) bir sorun meydana gelirse cihaz, OTA güncellemesini tamamlamak için kurtarma modunda önyükleme yapmaya çalışır. Ancak kaplama bölümü zaten güncellendiğinden kurtarma görüntüsünde (henüz güncellenmemiş) bir uyumsuzluk meydana gelebilir.
Güncelleme sırasında kurtarma işleminin DTBO/ACPIO bölümüne bağlı olmasını önlemek için, Android 9 veya üstünü çalıştıran A/B olmayan cihazlar, önyükleme görüntüsü formatında ayrı bir bölüm olarak kaplama görüntüsünden bilgiler içeren bir kurtarma DTBO/ACPIO görüntüsü belirtebilir ( 1 veya 2'lik bir önyükleme başlığı sürümü kullanmalısınız).
Önyükleme görüntüsü değişiklikleri
Kurtarma görüntüsünün, Android 9 veya üstünü çalıştıran A/B olmayan cihazlarda kurtarma DTBO veya ACPIO'yu içermesine izin vermek için önyükleme görüntüsü yapısını aşağıdaki şekilde güncelleyin.
Önyükleme görüntüsü bölümü | Sayfa sayısı |
---|---|
Önyükleme başlığı (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 önyükleyici (n sayfa) | n = ( second_size + page_size - 1) / page_size |
Kurtarma DTBO veya ACPIO (o sayfalar) | o = ( recovery_[dtbo|acpio]_size + page_size - 1) / page_size |
Önyükleme görüntüsü üstbilgisi sürümünü ve kaplama görüntüsü yollarını belirlemeye yönelik mkbootimg
aracı bağımsız değişkenleri hakkında ayrıntılar için bkz . Önyükleme Görüntüsü Üstbilgisi Sürümü Oluşturma .
DTBO'nun uygulanması
9 veya üzerini çalıştıran A/B olmayan cihazlar, kurtarma görüntüsünün recovery_dtbo
bölümünü doldurabilir. recovery_dtbo
görüntüsünü recovery.img
dosyasına, BoardConfig.mk
aygıtına eklemek için:
BOARD_INCLUDE_RECOVERY_DTBO
yapılandırmasınıtrue
olarak ayarlayın:BOARD_INCLUDE_RECOVERY_DTBO := true
Önyükleme görüntüsü üst bilgisi 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ü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
dosyasındaki BOARD_PREBUILT_DTBOIMAGE
değişkeni tarafından belirtilen DTBO'yu içerir.
ACPIO'nun Uygulanması
Android 9 veya üstünü çalıştıran A/B olmayan cihazlar, bir 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
görüntüsünü recovery.img
dosyasına, BoardConfig.mk
aygıtına eklemek için:
BOARD_INCLUDE_RECOVERY_ACPIO
yapılandırmasınıtrue
olarak ayarlayın:BOARD_INCLUDE_RECOVERY_ACPIO := true
Önyükleme görüntüsü üst bilgisi sürümünü belirtmek için
BOARD_MKBOOTIMG_ARGS
değişkenini genişletin. ACPIO kurtarmayı desteklemek için değişkenin 1'den büyük veya 1'e eşit olması gerekir.BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOTIMG_HEADER_VERSION)
BOARD_RECOVERY_ACPIO
değişkeninin ACPIO 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_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 ayarlanmışsa, Android derleme sistemi, recovery.img
dosyasındaki BOARD_RECOVERY_ACPIO
değişkeni tarafından belirtilen ACPIO'yu içerir.