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
ke1
. - Jika perangkat tidak mendukung pembuka kunci flash, setel
ro.oem_unlock_supported
ke0
.
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
.