[摘]Android稳定性(二)bootup fail

Android  2021年7月5日 pm7:57发布3年前 (2021)更新 91es.com站长
81 0 0

前言

之前我也有整理相关的,但没有摘抄的这篇文章那么详细,因此这里摘抄于此,方便自己查阅。

本文摘抄,感谢作者分析。

好记性不如烂笔头

正文

下面就简单介绍一下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打印

开机动画对应的启动阶段

  1. Linux内核启动的静态画面,具体在kernel/drivers/video/fbmem.c
  2. Init进程启动过程中出现的静态画面,具体在system/core/init/init.c
  3. 系统服务启动过程中出现的动态画面,实现是在init.rc里添加了一个bootAnimation的服务,启动的时机是在surfaceFlinger启动后,改变一个系统变量,执行开机动画,等launcher起来后,AMS通知surfaceFlinger改变变量值,开机动画退出。

参考文章

  1. Android稳定性(二)bootup fail

 历史上的今天

  1. 2023: Android多线程介绍(0条评论)
  2. 2020: [摘]Java IO流输入输出流(0条评论)
  3. 2019: 朱自清 :绿(0条评论)
版权声明 1、 本站名称: 91易搜
2、 本站网址: 91es.com3xcn.com
3、 本站内容: 部分来源于网络,仅供学习和参考,若侵权请留言
3、 本站申明: 个人流水账日记,内容并不保证有效

暂无评论

暂无评论...

随机推荐

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系统允许多个应用同时播放音频,这种特性有利有弊。例如当我们正在听音乐的时候突然点开了一个视频,如果我们发现音乐的声音和视频的的声音混合了在一起,这显然让我们非常不爽。而如果我们在播放音乐的时候,突然来了一条信息,这个时候,我们既希望能听到短信的提示音,又不希望音乐此刻停止,而是...