Mengunci dan membuka kunci bootloader

Secara default, sebagian besar perangkat Android dijual dengan bootloader terkunci, yang berarti pengguna tidak dapat mem-flash bootloader atau partisi perangkat. Jika diperlukan, Anda (dan pengguna perangkat yang mengaktifkan Opsi developer) dapat membuka kunci bootloader untuk mem-flash image baru.

Masuk ke bootloader

Untuk mengeluarkan perintah fastboot, Anda harus berada dalam mode bootloader. Salah satu cara untuk melakukannya adalah dengan mengirim perintah adb adb reboot bootloader. Beberapa ponsel juga memungkinkan Anda melakukan reboot ke bootloader dengan menekan kombinasi tombol (biasanya tombol turunkan volume) saat mem-booting perangkat.

Membuka kunci bootloader

Setelah dalam mode bootloader, untuk membuka kunci bootloader dan mengaktifkan partisi agar dapat di-flash ulang, jalankan perintah fastboot flashing unlock di perangkat. Setelah disetel, mode buka kunci akan tetap ada setelah perangkat dimulai ulang.

Perangkat harus menolak perintah fastboot flashing unlock kecuali jika get_unlock_ability disetel ke 1. Jika disetel ke 0, pengguna harus melakukan booting ke layar utama, membuka menu Setelan > Sistem > Opsi developer dan mengaktifkan opsi Pembukaan kunci OEM (yang menyetel get_unlock_ability ke 1). Setelah disetel, mode ini tetap ada di seluruh proses mulai ulang dan reset data ke setelan pabrik.

Saat perintah fastboot flashing unlock dikirim, perangkat akan meminta pengguna untuk memperingatkan mereka bahwa mereka mungkin mengalami masalah dengan gambar tidak resmi. Setelah pengguna mengonfirmasi peringatan, perangkat harus melakukan reset ke setelan pabrik untuk mencegah akses data yang tidak sah. Bootloader harus mereset perangkat meskipun tidak dapat memformat ulang dengan benar. Hanya setelah reset, flag persisten dapat disetel sehingga perangkat dapat di-flash ulang.

Semua RAM yang belum ditimpa harus direset selama proses fastboot flashing unlock. Tindakan ini mencegah serangan yang membaca sisa konten RAM dari booting sebelumnya. Demikian pula, perangkat yang tidak terkunci harus mengosongkan RAM setiap kali melakukan booting (kecuali jika hal ini menyebabkan penundaan yang tidak dapat diterima), tetapi harus membiarkan region yang digunakan untuk ramoops kernel.

Mengunci bootloader

Untuk mengunci bootloader dan mereset perangkat, jalankan perintah fastboot flashing lock di perangkat. Perangkat yang ditujukan untuk retail harus dikirim dalam keadaan terkunci (dengan get_unlock_ability menampilkan 0) untuk memastikan bahwa penyerang tidak dapat membahayakan perangkat dengan menginstal image sistem atau boot baru.

Menetapkan properti kunci dan buka kunci

Properti ro.oem_unlock_supported harus ditetapkan pada waktu build berdasarkan apakah perangkat mendukung pembukaan kunci flash.

  • Jika perangkat mendukung pembukaan kunci dengan kilatan, setel ro.oem_unlock_supported ke 1.
  • Jika perangkat tidak mendukung pembuka kunci flash, setel ro.oem_unlock_supported ke 0.

Jika perangkat mendukung buka kunci dengan flashing, bootloader harus menunjukkan status kunci dengan menyetel variabel command line kernel androidboot.flash.locked ke 1 jika terkunci atau ke 0 jika tidak terkunci. Variabel ini harus ditetapkan di bootconfig, bukan di command line kernel di Android 12.

Untuk perangkat yang mendukung dm-verity, gunakan ro.boot.verifiedbootstate untuk menyetel nilai ro.boot.flash.locked ke 0; tindakan ini akan membuka kunci bootloader jika status booting terverifikasi berwarna oranye.

Melindungi bagian penting

Perangkat harus mendukung penguncian dan pembukaan kunci bagian penting, yang ditentukan sebagai apa pun yang diperlukan untuk mem-boot perangkat ke bootloader. Bagian tersebut dapat mencakup sekering, partisi virtual untuk hub sensor, bootloader tahap pertama, dan lainnya. Untuk mengunci bagian penting, Anda harus menggunakan mekanisme yang mencegah kode (kernel, image pemulihan, kode OTA, dll.) yang berjalan di perangkat memodifikasi bagian penting secara sengaja. OTA akan gagal memperbarui bagian penting jika perangkat berada dalam status kunci kritis.

Transisi dari status terkunci ke tidak terkunci harus memerlukan interaksi fisik dengan perangkat. Interaksi ini mirip dengan efek menjalankan perintah fastboot flashing unlock, tetapi mengharuskan pengguna menekan tombol fisik di perangkat. Perangkat tidak boleh mengizinkan transisi dari lock critical ke unlock critical secara terprogram tanpa interaksi fisik, dan perangkat tidak boleh dikirim dalam status unlock critical.