Boot ROM فقط آغاز کار بود. برای رسیدن به Linux، دستگاه به محیطی غنیتر نیاز دارد که Memory، Storage، Security state و Boot images را مدیریت کند. این مجموعه Stageها همان چیزی است که بهطور کلی Bootloader مینامیم.
وظایف Bootloader
- Initialize کردن Memory و سختافزار لازم
- راهاندازی یا هماهنگی TEE و firmwareهای پلتفرم
- انتخاب Boot mode و A/B slot
- اجرای Verified Boot
- Parse کردن boot image headerها
- Load کردن Kernel، ramdisk و Device Tree
- ساخت kernel command line/bootconfig
- تحویل کنترل به Kernel
چرا چند Stage؟
ROM باید کوچک باشد، اما Boot کامل USB، Crypto، Display، Storage، Filesystem metadata و A/B logic میخواهد. بنابراین هر Stage امکانات لازم را برای Stage بعد فراهم میکند.
ROM → early loader → DRAM/storage ready → platform firmware → main bootloader → KernelNormal Boot
در Normal Boot، Bootloader Slot مناسب را انتخاب میکند، AVB را اجرا میکند، تصاویر لازم را در RAM میگذارد و Kernel را شروع میکند.
Recovery
Recovery یک Boot environment جدا برای OTA، Repair و Maintenance است. بعضی دستگاهها recovery partition مستقل دارند و بعضی layoutهای جدید از ramdiskهای boot/vendor_boot استفاده میکنند. انتخاب Recovery پیش از بالا آمدن Android معمولی انجام میشود.
Fastboot
Fastboot یک protocol و mode در سطح Bootloader است. وقتی Fastboot کار میکند، Stageهای اولیه و خود Bootloader تا حد قابلتوجهی سالماند. Commandهایی مثل getvar، flash، boot و reboot طبق policy دستگاه اجرا میشوند.
Fastbootd
Fastbootd با Bootloader Fastboot یکی نیست. fastbootd در userspace/recovery environment اجرا میشود و برای workflowهای Dynamic Partition و logical partitionها مناسبتر است.
Bootloader fastboot → boot-critical / firmware operations
fastbootd → userspace fastboot → dynamic/logical partitionsEDL/BROM پایینتر از Fastboot هستند
Fastboot
↑
Main bootloader
↑
Early stages
↑
ROM-level recovery: Qualcomm EDL / MediaTek BROMLocked و Unlocked
در حالت Locked، Bootloader باید Root of Trust مورداعتماد را enforce کند. Unlock برای اجرای Software سفارشی است و معمولاً نیاز به تأیید فیزیکی و Data wipe دارد. Unlocked بودن، Boot state و سیاست Verified Boot را تغییر میدهد اما به معنی خاموش شدن تمام امنیت Android نیست.
A/B Slots
در Seamless Update، Update روی Slot غیرفعال نوشته میشود و Bootloader در reboot بعدی Slot جدید را امتحان میکند. Slot باید بعد از Boot موفق Mark Successful شود تا fallback منطقی باشد.
Running A → update B → reboot → boot B → mark successful
└─ failure → fallback policyBootloader چه چیزی به Kernel میدهد؟
- Kernel در RAM
- generic/vendor ramdiskهای انتخابشده
- DTB/DTBO
- bootconfig یا cmdline
- Verified Boot state و slot
- platform-specific handoff data
GBL: جهت جدید Android
Google Generic Bootloader یا GBL را برای استانداردسازی core boot logic، Boot mode detection، Kernel loading و Fastboot توسعه داده است. در 2026 releaseهای رسمی Android 17 GBL منتشر شدهاند. این به معنی حذف فوری تمام Vendor bootloaderها نیست، بلکه نشاندهنده حرکت به سمت استانداردسازی بیشتر است.
Boot ROM → vendor early stages → MAIN BOOTLOADER
├─ mode
├─ slot
├─ AVB
├─ load images
└─ jump to Kernel