目录
前言
之前我也有整理相关的,但没有摘抄的这篇文章那么详细,因此这里摘抄于此,方便自己查阅。
本文摘抄,感谢作者分析。
好记性不如烂笔头
正文
下面就简单介绍一下Android系统启动流程。
BootLoader启动
开机供电,硬件电路会产生一个确定的复位时序用于硬件启动顺序,直至最后CPU启动;CPU开始执行第一条指令,该指令所在的内存地址是固定的,这个固定内存地址保存的程序就是bootloader,常用的就是U-boot,其作用就是拉起操作系统,装载用户程序;
Linux系统启动
内核解压,Linux初始化各种软硬件环境,加载驱动程序,挂载根文件系统,执行init服务;
init进程
init 进程是 Linux 系统中用户空间的第一个进程,进程号为1;init进程做两件事:挂载目录,解析init.rc;
Zygote 进程
init 进程在解析init.rc脚本时创建Zygote进程,Zygote是Android系统所有应用的父进程,都是由Zygote进程Fork出来的;
SystemServer进程
Zygote进程初始化完成后去启动SystemServer进程,SystemServer进程去启动framework的各种核心服务;
系统启动完成
ACTION_BOOT_COMPLETED开机广播发出,系统启动完成
bootup fail问题分析(以MTK平台为例)
抓取UART串口log,使用自带MTKLogger,同时抓取正常log对比。(对于启动流程分析,这种分析很不错)
根据关键字检索,查看是挂在开机启动那个阶段,哪行函数执行出错
“lk finished --> jump to linux kernel”----表示lk完成,进入kernel “Kernel_init_done”--------------------------表示kernel初始化完成 “init: init first stage started”----------------表示init进程正常起来执行 “fs_mgr” 和"e2fsck"-------------------------表示在检查和mount 文件系统 “zygote”----------------------------------------表示zygote进程启动 “system_server”-----------------------------表示system_server进程启动 “BOOT_Animation:END”------------------表示开机动画正常结束 “BOOTPROF”--------------------------------开机过程中,每一个重要阶段都会打印的标志 “1:init”-------------------------------------------init阶段重要log打印
开机动画对应的启动阶段
- Linux内核启动的静态画面,具体在kernel/drivers/video/fbmem.c
- Init进程启动过程中出现的静态画面,具体在system/core/init/init.c
- 系统服务启动过程中出现的动态画面,实现是在init.rc里添加了一个bootAnimation的服务,启动的时机是在surfaceFlinger启动后,改变一个系统变量,执行开机动画,等launcher起来后,AMS通知surfaceFlinger改变变量值,开机动画退出。
参考文章
历史上的今天
暂无评论...
随机推荐
The key must be an application-specific resource id
前言在做ListView+Adapter时,为了重复利用convertView,如下if (null != convertView) { viewHolder = (ViewHolder) convertView.getTag(TAG_VIEW_MEDIA);} else { ...
余光中:等你 在雨中
等你 在雨中 在造虹的雨中蝉声沉落 蛙声升起一池的红莲如红焰 在雨中 你来不来都一样 竟感觉每朵莲都像你尤其隔著黄昏 隔著这样的细雨 永恒 刹那 刹那 永恒等你 在时间之外在时间之内 等你 在刹那 在永恒 如果你的手在我的手里 此刻如果你的清芬...
刘大白:秋江的晚上
归巢的鸟儿,尽管是倦了,还驮着斜阳回去。双翅一翻,把斜阳掉在江上;头白的芦苇,也妆成一瞬的红颜了。
Android设备adb screenrecord录屏简单使用
前言Android测试有些现象无法用语言描述或者描述不清晰,因此会要求测试拍视频或者录屏,方便工程师解决问题。偶尔需要录像,因此这里整理一下adb screenrecord的使用,方便自己查阅和学习。好记性不如烂笔头正文screenrecord 命令规则screenrecord [op...
[摘]Ubuntu 常用解压与压缩命令
前言Ubuntu中解压文件的命令老是忘记,不同压缩后缀使用的命令也不一样。本文摘抄,原文在文章末尾。好记忆不如烂笔头正文.tar 文件# 仅打包,并非压缩tar -xvf FileName.tar # 解包tar -cvf FileName.tar DirName ...
[摘]Android音频焦点处理
概要Android系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是...