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 memulai ulang ke bootloader dengan menekan kombinasi tombol
(biasanya turunkan volume) saat mem-booting perangkat.
Buka kunci bootloader
Setelah dalam mode bootloader, jalankan perintah fastboot flashing unlock
di perangkat untuk membuka kunci bootloader dan mengaktifkan partisi
yang akan di-flash ulang. Setelah
disetel, mode buka kunci akan tetap ada setiap kali perangkat dimulai ulang.
Perangkat harus menolak perintah fastboot flashing unlock
kecuali
get_unlock_ability
disetel ke 1
. Jika disetel ke 0
, pengguna harus mem-booting ke
layar utama, buka menu Settings > System > Developer options
dan aktifkan opsi Buka kunci OEM (yang menyetel get_unlock_ability
ke 1
). Setelah disetel, mode ini akan tetap ada meskipun perangkat dimulai ulang dan
reset ke setelan pabrik.
Saat perintah fastboot flashing unlock
dikirim, perangkat harus meminta
pengguna untuk memperingatkan bahwa mereka mungkin mengalami masalah dengan image tidak resmi.
Setelah pengguna mengonfirmasi peringatan, perangkat harus mereset
data ke setelan pabrik untuk mencegah akses data yang tidak sah. Bootloader akan mereset
perangkat bahkan jika tidak dapat memformat ulang dengan benar. Hanya setelah reset,
flag persisten dapat ditetapkan sehingga perangkat dapat di-flash ulang.
Semua RAM yang belum ditimpa harus direset selama
proses fastboot flashing unlock
. Tindakan ini mencegah serangan yang membaca
konten RAM yang tersisa dari booting sebelumnya. Demikian pula, perangkat yang tidak terkunci harus
menghapus RAM pada setiap booting (kecuali jika hal ini menyebabkan penundaan yang tidak dapat diterima), tetapi
harus membiarkan region yang digunakan untuk
ramoops
kernel.
Kunci bootloader
Untuk mengunci bootloader dan mereset perangkat, jalankan perintah fastboot flashing lock
di perangkat. Perangkat yang ditujukan untuk retail harus dikirim dalam
status terkunci (dengan get_unlock_ability
menampilkan 0
) untuk memastikan penyerang
tidak dapat membahayakan perangkat dengan menginstal sistem atau image booting baru.
Menyetel properti kunci dan buka kunci
Properti ro.oem_unlock_supported
harus ditetapkan pada waktu build berdasarkan
apakah perangkat mendukung buka kunci dengan flash.
- Jika perangkat mendukung flash buka kunci, setel
ro.oem_unlock_supported
ke1
. - Jika perangkat tidak mendukung flash buka kunci, setel
ro.oem_unlock_supported
ke0
.
Jika perangkat mendukung flashing buka, bootloader harus menunjukkan
status kunci dengan menyetel variabel command line kernel
androidboot.flash.locked
ke 1
jika dikunci atau ke 0
jika tidak terkunci. Variabel ini
harus ditetapkan dalam bootconfig, bukan di command line kernel di Android 12.
Untuk perangkat yang mendukung dm-verity,
gunakan ro.boot.verifiedbootstate
untuk menetapkan 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 didefinisikan sebagai apa pun yang diperlukan untuk mem-booting perangkat ke bootloader. Bagian tersebut dapat mencakup sekring, 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 agar tidak sengaja mengubah bagian penting. OTA akan gagal mengupdate bagian penting jika perangkat dalam status kritis kunci.
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 untuk menekan
tombol fisik di perangkat. Perangkat tidak boleh mengizinkan transisi
secara terprogram dari lock critical
ke unlock critical
tanpa interaksi
fisik, dan perangkat tidak boleh dikirim dalam status unlock critical
.