Bootloader'ı kilitleme ve kilidini açma

Ç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ğerini 1 olarak ayarlayın.
  • Cihaz, yanıp sönerek kilit açma özelliğini desteklemiyorsa ro.oem_unlock_supported değerini 0 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.