Android系统启动流程
(1)系统引导bootloader,上电后,CPU IROM的程序会将bootloader装载到内存执行源码:bootable/bootoader/
启动模式
Camera + Power 启动到Fastboot,工厂模式,SD卡烧写模式(USB, 网络)
Home + Power启动recovery模式
按Power,正常开机模式
(2)Linux 内核,Bootloader在启动结束时,将CPU执行权交与kernel,Kernel 自解压,初始化内核和所有需要启动的驱动后,启动文件系统的init进程
源码:kernel/
(3)文件系统及init进程,
建立系统目录并挂载(格式:源 目的 类型)
初始化控制台
Log系统初始化
解析并执行init.rc
初始化环境变量
创建挂载点并挂载
创建一些android需要用到的文件或者目录并设置相应的权限
启动服务(adbd, console, vold, servicemanager, zygote...)
监听系统服务(后台程序)
源码:system/core/init/init.c
(4)桌面Launcher/home,Android系统启动的第一个应用,在ActivityManagerService.systemReady()发送消息,通知home启动,为什么Launcher第一个启动:Launcer的AmdroidManifest.xml中intent-filter 定义了<category android:name android.intent.category.HOME>
源码:packages/apps/Launcher/*
(5)屏幕解锁,系统启动后,一般会将系统锁住,此时必须解锁,才可以正常使用设备
源码:frameworks/policies/base/phone/com/android/internal/policy/impl/*lock*