Android系统是如何启动的?

安卓系统启动流程:
第一阶段 BootRom:为处理器上电/复位后执行的第一段代码(固化在Rom中),负责加载TEE与REE和拉起下一阶段BootLoader
*高通SOC的此阶段叫PBL
第二阶段 BootLoader:负责硬件的基本初始化和引导操作系统内核
1.早期安卓:使用uboot/LittleKernel引导
*其中LittleKernel(LK)使用较多
2.骁龙820后:使用UEFI引导
第一阶段SBL/XBL:基本硬件初始化(CPU MMU等),拉起aboot/ABL
第二阶段aboot/ABL:其余硬件初始化,校验启动镜像签名(AVB校验),加载启动镜像(内核)到系统
*解BL即为解开此阶段的AVB校验
*fastboot在此阶段提供,为通过USB与BootLoader通信的协议
第三阶段 Linux内核启动:
1.判断启动为正常启动/Recovery
1.1.正常启动:合并并加载boot.img和vendor_boot.img到Ramdisk
1.2.Recovery:加载boot.img到Ramdisk
2.执行first stage init:调用Ramdisk中的init,用于加载各种分区
3.执行second stage init:调用 /system/bin/init
第四阶段 安卓启动:
调用ActionManager组件,组件读取并执行系统中的配置文件
1.执行init.rc:负责各种基本的初始化操作
2.执行zygote.rc:负责启动系统
2.1.调用app_process拉起zygote和开启SystemServer
2.2.SystemServer拉起AMS等更多的系统级服务
2.3.AMS拉起Launcher(启动器)
