1、按下电源--->加载固化在ROM芯片的引导程序到RAM;
2、引导程序开启的主要是(bootloader)这块分为两个(preloader 和 lk)
3、bootloader加载进kernel内核
加载进内核之前阶段也就是我们常说的手机从硬件开始的启动阶段。平常我们获取手机的串口信息即为以上的信息。
-----------------------------------------------------------------------------------------------
接下来就是内核跳转进用户空间
4、内核完成系统设置后,开始在系统文件查找init进程。
init作用:(1)挂载目录,(2)解析init.rc脚本
5、init解析rc脚本,里面开始解析启动zygote,surcefacefilger、mediaserver等服务。
zygote-->启动java虚拟机(在hal层里面创建java虚拟机,从而从底层C++代码跳转到上层时,进行解析android代码)--->fork出system_server服务--->开始启动其他服务(电源管理器,电话注册,上下文管理器等,)主要分为启动引导服务,核心服务,以及其他服务,Launcher启动(界面)就是在其他服务里面进行启动。
真正详细的启动流程从底层到内核,内核到界面流程很多,上面只是我大体用几句话进行了总结。
比如preloader里面初始化的东西,lk里面设置的东西,内核完成后init挨着解析的服务,以及每个服务对应的功能一直到最后Launcher启动都是涉及很多详细的知识,此处只是大体进行了分类指出,以做笔记。