Bootloader adalah image milik vendor yang bertanggung jawab untuk menampilkan kernel pada perangkat. Ini menjaga status perangkat dan bertanggung jawab untuk menginisialisasi Lingkungan Eksekusi Tepercaya dan mengikat akar kepercayaannya. Bootloader juga memverifikasi integritas partisi boot
dan recovery
sebelum memindahkan eksekusi ke kernel, dan menampilkan peringatan status boot .
Operasi boot
Untuk memulai boot, bootloader dapat langsung mem-flash image baru ke partisi yang sesuai atau menggunakan recovery
untuk memulai proses reflashing yang digunakan untuk pembaruan over-the-air (OTA). Beberapa produsen perangkat membuat bootloader multi-bagian dan kemudian menggabungkannya menjadi satu file bootloader.img
; pada waktu flash, bootloader mengekstrak dan mem-flash semua bootloader individual.
Contoh aliran bootloader:
Bootloader memuat terlebih dahulu dan menginisialisasi memori.
Jika pembaruan A/B digunakan, bootloader menentukan slot saat ini untuk boot.
Bootloader menentukan apakah mode pemulihan harus di-boot (lihat Mendukung pembaruan ).
Bootloader memuat image boot, yang berisi image kernel dan ramdisk.
Bootloader memuat kernel ke dalam memori sebagai biner terkompresi yang dapat dieksekusi sendiri. Kernel kemudian mendekompresi dirinya sendiri dan mulai mengeksekusi ke dalam memori.
Bootloader memuat
init
, baik dari partisiramdisk
(pada perangkat yang lebih lama) atau dari partisi sistem (pada perangkat yang lebih baru).Dari partisi sistem,
init
meluncurkan dan memasang semua partisi lain (sepertivendor
,oem
, danodm
), dan kemudian mulai mengeksekusi kode untuk memulai perangkat.
Baris perintah kernel
Gabungkan baris perintah kernel dari lokasi berikut:
Baris perintah bootloader: kumpulan parameter statis dan dinamis yang ditentukan oleh bootloader
Pohon Perangkat: dari simpul yang dipilih/bootargs
defconfig
: dariCONFIG_CMDLINE
boot.img
: dari cmdline (untuk offset dan ukuran, lihatsystem/core/mkbootimg/bootimg.h
Alasan reboot atau shutdown kanonik yang sesuai dengan Dokumen Definisi Kompatibilitas Android sebagaimana ditentukan dari sirkuit terpadu manajemen daya (PMIC), sumber daya perangkat keras lainnya, dan pesan argumen ajaib reboot (
LINUX_REBOOT_CMD_RESTART2
). Sintaksnya adalah:androidboot.bootreason=reason
Dukungan untuk pohon perangkat dan hamparan pohon perangkat
Bootloader dapat mendukung konfigurasi yang berbeda dengan mengidentifikasi perangkat keras/revisi produk perangkat kemudian memuat set overlay pohon perangkat yang benar.
Dukungan untuk pengacakan tata letak ruang alamat kernel
Untuk mendukung pengacakan alamat virtual tempat imej kernel dimuat (diaktifkan oleh konfigurasi kernel RANDOMIZE_BASE
), bootloader harus menyediakan entropi dengan meneruskan nilai u64 acak di simpul pohon perangkat /chosen/kaslr-seed
.
Dukungan untuk boot terverifikasi
Untuk detail tentang menggunakan bootloader untuk menerapkan boot terverifikasi, lihat Memverifikasi Boot .