Kablosuz (OTA) güncellemeleri uygulamak için bootloader'ın başlatma sırasında kurtarma RAM diskine erişebilmesi gerekir. Cihaz, değiştirilmemiş bir AOSP kurtarma görüntüsü kullanıyorsa bootloader, misc
bölümündeki ilk 32 baytı okur. Buradaki veriler boot-recovery
ile eşleşirse bootloader, recovery
görüntüsüne önyükleme yapar. Bu yöntem, bekleyen kurtarma işlemlerinin (ör. OTA uygulama veya veri kaldırma) tamamlanmasını sağlar.
Kurtarma ve önyükleyici tarafından iletişim için kullanılan flaş bellekteki bir bloğun içeriğiyle ilgili ayrıntılar için bootable/recovery/bootloader_message/bootloader_message.h adresine bakın.
A/B güncellemeleri olan cihazlar
A/B güncellemelerini kullanan cihazlarda OTA güncellemelerini desteklemek için cihaz önyükleyicisinin aşağıdaki ölçütleri karşıladığından emin olun.
Genel ölçütler
OTA üzerinden güncellenen tüm bölümler, ana sistem başlatılırken (ve kurtarma modunda güncellenmezken) güncellenebilir olmalıdır.
Önyükleyici,
system
bölümünü önyüklemek için çekirdek komut satırında şu değeri iletir:ro root=/dev/[node] rootwait init=/init
.HAL'den
markBootSuccessful
işlevini çağırmak Android çerçevesinin sorumluluğundadır. Bootloader, hiçbir zaman bir bölümü başarıyla başlatılmış olarak işaretlememelidir.
Önyükleme kontrolü HAL'si için destek
Bootloader, boot_control
HAL'ı desteklemelidir. Bu HAL, hardware/libhardware/include/hardware/boot_control.h
içinde tanımlanmıştır. Güncelleyici, boot control
HAL'yi sorgular, kullanılmayan önyükleme yuvasını günceller, HAL'yi kullanarak etkin yuvayı değiştirir ve güncellenen işletim sisteminde yeniden başlatılır. Ayrıntılı bilgi için Başlatma kontrolü HAL'sini uygulama başlıklı makaleyi inceleyin.
Slotlar için destek
Bootloader, aşağıdakiler de dahil olmak üzere bölümler ve yuvalarla ilgili işlevleri desteklemelidir:
Bölüm adları, hangi bölümlerin önyükleyicideki belirli bir yuvaya ait olduğunu tanımlayan bir sonek içermelidir. Bu tür her bölüm için
has-slot:partition base name
değerine sahip bir değişkenyes
vardır. Aralıklar,_a
,_b
,_c
vb. sonekine sahip bölümlere karşılık gelecek şekilde alfabetik olarak adlandırılır. Önyükleyici,androidboot.slot_suffix
komut satırı özelliğini kullanarak hangi aralığın başlatıldığını işletim sistemine bildirmelidir. Bu özellik, Android 12 veya sonraki sürümlerle kullanıma sunulan cihazlar için bootconfig üzerinden ayarlanır.slot-retry-count
değeri,setActiveBootSlot
geri çağırma yoluyla önyükleme kontrolü HAL'si veyafastboot set_active
komutu aracılığıyla pozitif bir değere (genellikle3
) sıfırlanır. Bir yuvaya ait olan bölüm değiştirildiğinde önyükleyici, "başarıyla başlatıldı"yı temizler ve yuvanın yeniden deneme sayısını sıfırlar.
Bootloader, hangi yuvanın yükleneceğini de belirlemelidir. Şekilde örnek bir karar verme süreci gösterilmektedir.

Hangi yerin denenmesi gerektiğini belirleyin.
slot-unbootable
olarak işaretlenmiş bir yuva yüklemeye çalışmayın. Bu yuva, fastboot tarafından döndürülen değerlerle tutarlı olmalı ve mevcut yuva olarak adlandırılır.Mevcut yuva
slot-successful
olarak işaretlenmemişse veslot-retry-count = 0
içeriyorsa mevcut yuvayıslot-unbootable
olarak işaretleyin. Ardından,unbootable
olarak işaretlenmemiş veslot-successful
olarak işaretlenmiş farklı bir yuva seçin. Bu yuva artık seçili yuvadır. Mevcut bir yuva yoksa kurtarma modunda başlatın veya kullanıcıya anlamlı bir hata mesajı gösterin.Uygun
boot.img
seçeneğini belirleyin ve çekirdek komut satırında doğru sistem bölümünün yolunu ekleyin.Çekirdek komut satırı
slot_suffix
parametresini doldurun.Başlatma
slot-successful
olarak işaretlenmemişseslot-retry-count
değerini azaltın.
fastboot
yardımcı programı, herhangi bir flash komutu çalıştırıldığında hangi bölümün flash'leneceğini belirler. Örneğin, fastboot flash system system.img
komutunu çalıştırmak önce current-slot
değişkenini sorgular, ardından sonucu birleştirerek
sisteme aktarılacak bölümün adını oluşturur
(system_a
, system_b
vb.).
Geçerli yuva, fastboot set_active
komutu veya
boot control HAL setActiveBootSlot
komutu kullanılarak ayarlandığında önyükleyici geçerli yuvayı güncellemeli, slot-unbootable
ve slot-successful
değerlerini temizlemeli ve yeniden deneme sayısını sıfırlamalıdır (slot-unbootable
değerini temizlemenin tek yolu budur).
A/B güncellemeleri olmayan cihazlar
A/B güncellemelerini kullanmayan cihazlarda OTA güncellemelerini desteklemek için (bkz. Non-A/B updatable devices) cihaz önyükleyicisinin aşağıdaki ölçütleri karşıladığından emin olun.
recovery
bölümü, desteklenen bir bölümden (cache
,userdata
) sistem görüntüsünü okuyabilen vesystem
bölümüne yazabilen bir görüntü içermelidir.Bootloader, doğrudan kurtarma moduna önyüklemeyi desteklemelidir.
Radyo görüntüsü güncellemeleri destekleniyorsa
recovery
bölümü de radyoyu flaşlayabilmelidir. Bu işlem iki şekilde yapılabilir:Bootloader, radyoyu flaşlar. Bu durumda, güncellemeyi tamamlamak için kurtarma bölümünden yeniden başlatarak bootloader'a geri dönmek mümkün olmalıdır.
Kurtarma görüntüsü, radyoyu yanıp söner. Bu işlev, ikili kitaplık veya yardımcı program olarak sağlanabilir.