这里分享一篇比较好的文章https://cloud.tencent.com/developer/article/1199503
android启动过程
1. poweron -- 上电
2. bootloader -- cup内部的bootloader根据硬件GPIO的设置 判断系统是以什么方式启动(U盘 、SD卡、内置flash)
-- 开始引导 [3. uboot]
3. uboot [1] -- 初始化相关外设(内存、flash、I/O)
-- 通过串口修改启动参数
-- 引导内核启动
4. kernel [1] -- 初始化相关外设(系统主频、内存、flash) source/kernel/init/main.c
-- 驱动加载(系统驱动、外设驱动)
-- 根据 [3. uboot] 配置的启动参数启动系统
5. android [1] -- 挂载分区
-- 创建android目录
-- 动态加载驱动
-- 启动系统服务(mediaservice、servicemanager、adbd、bootanimation、surfaceflinger、zygote)
-- 配置环境变量(硬件版本、软件版本)
-- 守护系统(服务出错重新创建)
android启动两种模式
升级模式 (recovery) 启动recovery分区的内核合文件系统 小、服务少
recovery模式可以完成 -- 清除数据
-- 系统升级 [2] (差量包升级、全包升级) 差量包主要对system分区进行差量升级 全包对system分区全部升级
正常启动模式 引导内核和启动android系统
在何时进行启动模式区分 -- 在 [3. uboot] 启动区分
如何进入升级模式 (recovery) -- 当设备启动到 [3. uboot] 并且进行输入recovery命令 在重启的时候就会检查recovery命令进行升级模式
-- 等待按键输入 捕获相应按键输入 引导升级模式
-- 下载安装包 调用reboot命令进行recovery升级 重启后直接进入recovery模式 默认安装相应安装包
[1] android的启动时间可以从 3 4 5 过程优化
[2] 升级失败可以在设备重启后在cache分区查看相应log