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 girme

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çma

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ıları resmi olmayan resimlerle ilgili sorun yaşayabilecekleri konusunda uyarır. 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 yanıp sönülebilmesi için yalnızca sıfırlamadan 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 kilidini desteklemiyorsa önyükleyici, çekirdek komut satırı değişkeni androidboot.flash.locked'ü kilitliyse 1, kilidi açıksa 0 olarak ayarlayarak kilit durumunu göstermelidir. Bu değişken, Android 12'de çekirdek komut satırında değil, 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 turuncuysa 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 (çekirdek, kurtarma resmi, OTA kodu vb.) kritik bölümleri kasıtlı olarak değiştirmesini önleyen bir mekanizma kullanmanız gerekir. Cihaz kilitli 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şe izin vermemeli ve unlock critical durumunda gönderilmemelidir.