第一阶段:启动ROM_code
=============================
第二阶段:启动X_loader
=============================
第三阶段:启动U_boot
stage1:
基本硬件设备(如CPU等)的初始化;
为stage2部分的代码准备RAM空间;
设置好堆栈;
跳入stage2 C入口。
stage2:
监测系统内存映射;
将kernel镜像和根文件系统镜像从Flash读入RAM中;
设置内核启动参数;
调用内核。
=============================
第四阶段:启动内核
step1:
kernel自解压
step2:
设置CPU工作模式,打开mmu、cache,设置内核页表,初始化串口、console、mmc、nand、显示、网络(分配IP与Mac地址)等硬件设备,使能中断、初始化进程间通信IPC等。
step3:
挂载根文件系统,设置根文件系统为rootfs,加载设备驱动以及内核静态模块。
=============================
第五阶段:启动用户进程init
文件权限清零;
为rootfs创建必要的文件夹,挂在必要分区;
创建/dev/null和/dev/kmsg节点;
解析init.rc启动脚本,执行各阶段动作;
初始化qemu模拟器(保证Android app能在无真正Android设备的情况下运行Android app);
初始化属性系统,开启属性服务;
显示设备开机logo/声音;
init进程进入死循环。
=============================
第六阶段:启动java虚拟机zygote,进入java世界
=============================
第七阶段:启动systemserver后台服务
=============================
第八阶段:启动launcher桌面程序
=============================
第九阶段:启动lockscreen锁屏界面
=============================
第十阶段:启动第三方apk并显示于launcher桌面