Çoğu Android cihaz varsayılan olarak kilitli bir önyükleyiciyle birlikte gönderilir. Bu durumda, kullanıcılar önyükleyiciyi veya cihaz bölümlerini yükleyemez. Gerekirse siz (ve geliştirici seçenekleri etkin olan cihaz kullanıcıları) yeni resimler yüklemek için önyükleyicinin kilidini açabilirsiniz.
Bootloader'a erişme
fastboot
komutları vermek için bootloader modunda olmanız gerekir. Bunu yapmanın bir yolu, adb reboot bootloader
adb komutunu göndermektir. Bazı telefonlarda, cihazı başlatırken bir tuş kombinasyonuna (genellikle ses azaltma) basarak önyükleyiciye yeniden de başlayabilirsiniz.
Bootloader'ın kilidini açın
Bootloader moduna girdikten sonra, bootloader'ın kilidini açmak ve bölümlerin yeniden yüklenmesini sağlamak için cihazda fastboot flashing unlock
komutunu çalıştırın. Kilit açma modu, ayarlandıktan sonra yeniden başlatmalarda devam eder.
get_unlock_ability
1
olarak ayarlanmazsa cihazlar fastboot flashing unlock
komutunu reddetmelidir. 0
olarak ayarlandıysa kullanıcının ana ekrana önyükleme yapması, Ayarlar > Sistem > Geliştirici seçenekleri menüsünü açması ve OEM kilit açma seçeneğini etkinleştirmesi (get_unlock_ability
değerini 1
olarak ayarlayan) gerekir. Bu mod, ayarlandıktan sonra yeniden başlatma ve fabrika verilerine sıfırlama işlemlerinde korunur.
fastboot flashing unlock
komutu gönderildiğinde cihaz, kullanıcılardan resmi olmayan görüntülerle ilgili sorunlarla karşılaşabileceklerini uyarmalarını istemelidir.
Kullanıcı uyarıyı onayladıktan sonra cihaz, yetkisiz veri erişimini önlemek için fabrika verilerine sıfırlama işlemi gerçekleştirmelidir. Önyükleyici, düzgün şekilde yeniden biçimlendiremese bile cihazı sıfırlamalıdır. Kalıcı işaret, cihazın yeniden
yeniden başlatılabilmesi için ancak sıfırlama işleminden sonra ayarlanabilir.
Üzerine yazılmamış tüm RAM'ler fastboot flashing unlock
işlemi sırasında sıfırlanmalıdır. Bu önlem, önceki önyüklemeden kalan RAM içeriklerini okuyan saldırıları önler. Benzer şekilde, kilidi açılmış cihazlar her açılışta RAM'i temizlemelidir (kabul edilemez bir gecikme oluşturmadığı sürece) ancak çekirdeğin ramoops
için kullanılan bölgesini bırakmalıdır.
Bootloader'ı kilitleme
Bootloader'ı kilitlemek ve cihazı sıfırlamak için cihazda fastboot flashing lock
komutunu çalıştırın. Perakende satışa yönelik cihazlar, saldırganların yeni bir sistem veya önyükleme resmi yükleyerek cihazı tehlikeye atamaması için kilitli durumda (get_unlock_ability
0
döndürülür) gönderilmelidir.
Kilitleme ve kilidi açma özelliklerini ayarlama
ro.oem_unlock_supported
mülkü, cihazın yanıp sönerek kilit açma özelliğini destekleyip desteklemediğine bağlı olarak derleme sırasında ayarlanmalıdır.
- Cihaz, yanıp sönerek kilit açma özelliğini destekliyorsa
ro.oem_unlock_supported
değerini1
olarak ayarlayın. - Cihaz, yanıp sönerek kilit açma özelliğini desteklemiyorsa
ro.oem_unlock_supported
değerini0
olarak ayarlayın.
Cihaz, önyükleme sırasında kilit açma özelliğini destekliyorsa önyükleyici, çekirdek komut satırı değişkeni androidboot.flash.locked
'yi kilitliyse 1
, kilidi açıksa 0
olarak ayarlayarak kilit durumunu göstermelidir. Bu değişken, Android 12'de çekirdek komut satırı yerine bootconfig'de ayarlanmalıdır.
dm-verity'yi destekleyen cihazlarda ro.boot.flash.locked
değerini 0
olarak ayarlamak için ro.boot.verifiedbootstate
kullanın. Bu işlem, doğrulanmış başlatma durumu turuncu olduğunda bootloader'ın kilidini açar.
Kritik bölümleri koruma
Cihazlar, kritik bölümlerin kilitlenmesini ve kilidinin açılmasını desteklemelidir. Kritik bölümler, cihazı bootloader'da başlatmak için gereken her şey olarak tanımlanır. Bu bölümlerde sigortalar, sensör merkezi için sanal bölümler, birinci aşama önyükleme yükleyici ve daha fazlası bulunabilir. Kritik bölümleri kilitlemek için, cihazda çalışan kodun (ör. çekirdek, kurtarma görüntüsü, OTA kodu) kritik bölümleri kasıtlı olarak değiştirmesini engelleyen bir mekanizma kullanmanız gerekir. Cihaz kritik durumdaysa OTA'lar kritik bölümleri güncelleyememelidir.
Kilitli durumdan kilidi açık duruma geçiş için cihazla fiziksel etkileşim gerekir. Bu etkileşim, fastboot flashing unlock
komutunun çalıştırılmasının etkilerine benzer ancak kullanıcının cihazdaki fiziksel bir düğmeye basmasını gerektirir. Cihazlar, fiziksel etkileşim olmadan lock critical
durumundan unlock critical
durumuna programatik olarak geçiş yapılmasına izin vermemeli ve unlock critical
durumunda gönderilmemelidir.