背景
andriod设备,按下电源键后,经过一系列硬件初始化,软件服务启动,到显示桌面。整个流程,尽量详细的记录。
启动流程概览
- 按下电源键,加载Boot Rom。
- 加载XBL
- 加载ABL
- 启动内核。
- 加载init.rc,启动init进程
- 启动Zygote进程
- 启动system_server进程,以及system相关服务
- 启动桌面
启动流程详情
-
按下电源键,加载Boot Rom。
1、按下电源键,电源管理芯片,为各个硬件加电
2、cpu上电,执行的第一个代码,在cpu内部的boot rom中。boot rom中代码是只读的,在芯片制造时写入,流片后不可更改。也叫做PBL。boot rom的存在是为了确保bootloader可信,从而将信任链传导到后面的avb验证chain
3、验证并加载XBL。 -
加载XBL
1、XBL(Extensible Boot Loader)也叫SBL负责初始化硬件环境(DDR、clocks)和代码安全环境(TrustZone)。XBL代码存在闪存上。高通9008模式在此。
2、验证并加载ABL -
加载ABL
1、ABL(Android Boot Loader),是我们通常理解的bootloader,解锁后可以刷机(fastboot线刷)。
2、根据用户选择,进入recovery模式(卡刷)、或者线刷、或者启动内核。
3、如果用户选择正常启动,则通过AVB验证vbmeta.img。vbmeta.img中记录了boot.img、vendor.img、odm.img等镜像的摘要,用于启动时的avb验证,保证Img的合法性和完整性。boot.img验证通过后,就挂载并启动内核。 -
启动内核。
-
加载init.rc,启动init进程
-
启动Zygote进程
-
启动system_server进程,以及system相关服务
- 尽情期待