Aşağıdaki bilinen sorunları gidermek için aşağıdaki yamaları seçin.
Yandan yükleme yaparken ayrılabilir alanı doğru şekilde kontrol etme
*2 * sum(update groups) boyutundan küçük bir süper bölümü olan sanal A/B cihaza tam OTA paketini yan yükleme işlemi, /tmp/recovery.log
kurtarma günlüğünde aşağıdaki hata mesajıyla başarısız olabilir:
The maximum size of all groups with suffix _b (...) has exceeded half of allocatable space for dynamic partitions ...
Aşağıda günlüğün bir örneği verilmiştir:
[INFO:dynamic_partition_control_android.cc(1020)] Will overwrite existing partitions. Slot A may be unbootable until update finishes!
[...]
[ERROR:dynamic_partition_control_android.cc(803)] The maximum size of all groups with suffix _b (2147483648) has exceeded half of allocatable space for dynamic partitions 1073741824.
Bu sorunla karşılaşırsanız CL puanına sahip seçeneği belirleyin. 1399393, yeniden inşa etme ve yanıp sönme Cihaz, kurtarma işlemini şu şekilde kullanmıyorsa başlatma bölümü veya kurtarma başlatın.
Birleştirme sırasında segmentasyon hatası düzeltme
Bir OTA güncellemesi uygulandıktan sonra, VAB birleştirme işlemi sırasında
update_engine_client --cancel
, CleanupPreviousUpdateAction
ürününün kilitlenmesine neden oluyor. CEVAP
markSlotSuccessful
geç geldiğinde de olası joker işaretçi hatası oluşur.
Bu sorun, StopActionInternal
işlevi eklenerek çözüldü.
CleanupPreviousUpdateAction
, yok edildiğinde bekleyen görevleri iptal eder. Bir
değişkendir. Şu tarihte:
beklemedeki görev, hatadan kaçınmak için iptal edilir.
Birleştirme sırasında update_engine
'te SIGSEGV
kilitlenmelerini düzeltmek için Android 11 kaynak ağacınızda aşağıdaki değişikliklerin bulunduğundan emin olun:
- CL 1439792 ( CL 1439372'nin ön koşulu)
- CL 1439372
(
CleanupPreviousUpdateAction
: destroy işleminde bekleyen görevleri iptal et) - CL 1663460 (
markSlotSuccessful
geç geldiğinde olası joker işaretçi hatası)
update_engine erken birleştirmeyi önleme
Bir cihaz (Android 11 ve sonraki sürümler) açıldığında ve açma işlemi tamamlandığında update_engine
, ScheduleWaitMarkBootSuccessful()
ve WaitForMergeOrSchedule()
'yi çağırır. Bu işlem, birleştirme işlemini başlatır. Ancak, cihaz
yeniden başlatılır. Birleştirme işlemi başlatıldığı için cihaz şu işlemi gerçekleştiremiyor:
açılır ve çalışamaz hale gelir.
Aşağıdaki değişiklikleri kaynak ağacınıza ekleyin. CL 1664859'un isteğe bağlı olduğunu unutmayın.
- CL 1439792 (CL 1439372 için ön koşuldur)
- CL 1439372
(
CleanupPreviousUpdateAction
: Kaldırma işlemi sırasında beklemedeki görevleri iptal et) - CL 1663460 (
markSlotSuccessful
geç geldiğinde olası genel işaretçi hatasını düzeltme) - CL 1664859 (isteğe bağlı -
CleanupPreviousUpdateAction
içinunittest
ekleyin)
Doğru dm-verity yapılandırmasını sağlama
Android 11 ve sonraki sürümlerde cihazlar yanlışlıkla aşağıdaki dm-verity seçenekleriyle yapılandırılabilir:
- Çekirdekteki
CONFIG_DM_VERITY_AVB=y
AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO
olmadan herhangi bir doğrulama modunu (ör.AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE
) kullanacak şekilde yapılandırılmış önyükleme yöneticisi.
Bu cihaz yapılandırmasında, doğrulama hataları vbmeta bölümünün bozulmasına neden olur ve A/B olmayan cihazları kullanılamaz hale getirir. Benzer şekilde,
A/B cihazları da çalışmayabilir. Yalnızca AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO
doğrulama modunu kullanın.
- Çekirdekte
CONFIG_DM_VERITY_AVB=n
ayarlayın. - Cihazları şunu kullanacak şekilde yapılandırın:
Bunun yerine
AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO
modunu kullanın.
Daha fazla bilgi için Verity belgelerine bakın: dm-verity hatalarını ele alma.
Birleştirilmiş dosyanın doğru şekilde yapılandırıldığını doğrulama
Sistem görüntülerini ve tedarikçi firma görüntülerini ayrı ayrı oluşturuyorsanız ve bunları birleştirmek için merge_target_files
kullanıyorsanız sanal A/B yapılandırmaları, birleştirme işlemi sırasında yanlışlıkla bırakılabilir. Sanal A/B'yi doğrulamak için:
birleştirilen hedef dosyada yapılandırmaların doğru olduğundan emin olmak için
yamalar: CL
2084183
(dinamik bölüm bilgilerinde özdeş anahtar/değer çiftlerini birleştirme)
Gerekli bileşenleri güncelleme
snapuserd
, Android 13'ten itibaren satıcı RAM'inden genele taşındı
ramdisk'e dokunun. Cihazınız Android 13'e geçiyorsa her iki durumda da
satıcı ramdisk'i ve genel ramdisk'te snapuserd
kopyası bulunur. Burada
Sanal A/B için snapuserd
sistem kopyası gerekir. snapuserd
dosyasının doğru kopyasının bulunduğundan emin olmak için CL 2031243'ü uygulayın (snapuserd
dosyasını first_stage_ramdisk'e kopyalayın).