Secara default, sebagian besar perangkat Android dikirimkan dengan bootloader terkunci, yang berarti pengguna tidak dapat mem-flash bootloader atau partisi perangkat. Jika diperlukan, Anda (dan pengguna perangkat dengan opsi Developer diaktifkan) 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 volume turun) saat mem-booting perangkat.
Membuka 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
ditetapkan, mode buka kunci akan tetap ada saat memulai ulang.
Perangkat harus menolak perintah fastboot flashing unlock
kecuali jika
get_unlock_ability
ditetapkan ke 1
. Jika disetel ke 0
, pengguna harus melakukan booting ke
layar utama, membuka menu Settings > System > Developer options,
dan mengaktifkan opsi OEM unlocking (yang menetapkan get_unlock_ability
ke 1
). Setelah disetel, mode ini akan tetap ada di seluruh mulai ulang dan reset data
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 akan melakukan reset data
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 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 meninggalkan 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
status terkunci (dengan get_unlock_ability
menampilkan 0
) untuk memastikan bahwa penyerang
tidak dapat membahayakan perangkat dengan menginstal sistem atau image booting baru.
Menetapkan 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 flashing unlock, setel
ro.oem_unlock_supported
ke1
. - Jika perangkat tidak mendukung flash buka kunci, setel
ro.oem_unlock_supported
ke0
.
Jika perangkat mendukung flashing unlock, bootloader harus menunjukkan
status kunci dengan menetapkan 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 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 apa pun. OTA akan gagal memperbarui bagian penting jika perangkat berada 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 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
.