Android 开机问题知多少

摘要:
__装载(source=/dev/block/dm-0:type=ext4)=-1数据分区装载失败调试方法a。一般加密/userdata分区将首先装载失败,

Android 开机问题知多少第1张

极力推荐文章:欢迎收藏
Android 干货分享

Android 开机问题知多少第2张

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

一、 如何抓取开机问题Log
二、开机问题Log 分析流程
三、 kernel Log 搜索关键字fs_mgr 初步分析定位
四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert
五、开始时间长的问题分析方法

一、 如何抓取开机问题Log

当我们遇到开机问题时候,不同阶段,我们需要不同的Log分析,这样才可以快速方便的解决开机问题,如果没有Log,我们几乎很难分析解决开机问题。

开机问题 抓取 Log 流程如下:
 如何抓取开机问题Log

二、开机问题Log 分析流程

通过不同阶段的Log,我们进行不同的重点分析。

开机问题Log 分析流程如下:

开机问题Log分析流程

三、 kernel Log 搜索关键字 fs_mgr

kernel Log 中搜索关键字 fs_mgr 初步分析定位分区问题。

1. fs_mgr: __mount(source=/dev/block/dm-0,target=/system,type=ext4)=-1

System分区mount失败debug方法

  • a.Kernel log中有emmc “I/O error” ,需要检查emmc相关供电,替换物料交叉实验
  • b.Log中没有I/O error, 回读system分区对比正常机器system.img看文件是否被破坏

2.fs_mgr: __mount(source=/dev/block/dm-0,target=/data,type=ext4)=-1

Data分区mount失败debug方法

a.一般加密的情况/userdata分区会先出现 mount fail情况, 然后才解密节点/dev/block/dm-0 or dm-1 , target=/data mount成功 ,正常
b.如果只有userdata mount 失败, 可能是分区数据毁损, 请先readback img, 然后手动进recovery modefactory reset 看能否恢复
c.Readbackuserdata img 可以对比正常机器看是哪个文件毁损

3. init: fs_mgr_mount_all returned an error

Dm-verity配置错误引起user版本开不了机(eng版本正常)

同步打开/kernel-3.18/arch/arm/configs/${project}_defconfig 中如下两个定义:

		CONFIG_DM_VERITY=y
                 CONFIG_DM_VERITY_FEC=y

4.fs_mgr: Error loading verity table (Invalid argument) 跳转至3

四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert 五、开始时间长的问题分析方法

1. MTK 平台开机时间保存的文件

a.手机中(/proc/bootprof
b.mobile Log中的bootprof文件。
c. Kernel Log 中搜索关键字 BOOTPROF

2. 开机时间耗时分解

a.Preloader耗时(5~8s): preloader
b.Lk耗时(4~6s): lk
c.Kernel初始化完成(5~10s): Kernel_init_done
d.开始播放动画30~35s: BOOT_Animation:START
e.动画播放完毕: BOOT_Animation:END

/proc/bootprof记录开机时间的文件举例如下:

<< /proc/bootprof >>:
----------------------------------------
0	    BOOT PROF (unit:msec)
----------------------------------------
      // preloader LK
      1336        : preloader
      8331        : lk (Start->Show logo: 1382)
----------------------------------------
    ... ...
    // Kernel 初始化完成
    2902.540083 :    1-swapper/0       : Kernel_init_done
	 
	... ... 
    // 开机动画开始
    7958.560172 :  705-SurfaceFlinger: : BOOT_Animation:START
    ... ... 
	// 开机动画播放完毕
    298996.885174 : 2097-Binder:463_5    : BOOT_Animation:END
    299055.478251 : 1083-ActivityManager : AP_Init:[service]:[com.android.bluetooth]:[com.android.bluetooth/.btservice.AdapterService]:pid:3854
    299079.525174 : OFF
----------------------------------------
================ END of FILE ===============

/proc/bootprof 记录开机时间的文件

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

微信关注公众号: 程序员Android,领福利

免责声明:文章转载自《Android 开机问题知多少》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇开源项目【mall】完整的电商系统移动端web页面使用position:fixed问题总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

日志配置(springboot、mybatis、Lombok)

Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容 SLF4J——Simple Logging Facade For Java,它是一个针对于各类Jav...

CentOS7下swap分区创建(添加),删除以及相关配置

在添加swap分区之前我们可以了解下当前系统swap是否存在以及使用情况,可用: 1. free –h 或 swapon –s 了解硬盘使用情况(一般/dev/vda1为挂载硬盘): 1. df –hal --------------------------------------------------一.添加swap分区 使用d...

抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(一)

我们知道,Android 低版本(4.X 及以下,SDK < 21)的设备,采用的 Java 运行环境是 Dalvik 虚拟机。它相比于高版本,最大的问题就是在安装或者升级更新之后,首次冷启动的耗时漫长。这常常需要花费几十秒甚至几分钟,用户不得不面对一片黑屏,熬过这段时间才能正常使用 APP。   这是非常影响用户的使用体验的。我们从线上数据也...

Hive调优实战[转]

Hive优化总结 【转自:http://sznmail.iteye.com/blog/1499789】 优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。 理解hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。   长期观察hadoop处理数据的过程,有几个显著的特征: 1.不怕数据多...

三、文件的操作、函数、类和对象

一、文件 文件的打开与关闭 在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式) 示例如下: f = open('test.txt', 'w') 说明: 访问模式 说明 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 w 打开一个文件只用于写入。如果该文件已存...

sqlserver 文件与文件组的使用和优化

文件和文件组填充策略    文件组对组内的所有文件都使用按比例填充策略。当数据写入文件组时,SQL Server 数据库引擎按文件中的可用空间比例将数据写入文件组中的每个文件,而不是将所有数据都写入第一个文件直至其变满为止。然后再写入下一个文件。例如,如果文件 f1 有 100 MB 可用空间,文件 f2 有 200 MB 可用空间,则从文件 f1...