1.modem分区,主要是手机短信的通讯模块;

2.bootloader分区,主要用于线刷;

3.recovery分区,只有用于普通刷机;

4.boot分区,用于启动;

5.system分区,系统分区;

6.data分区,用户分区;

7.cache分区:存储使用过程中的缓存数据

8.vendor:包含有厂商私有的可执行程序、库、系统服务和app等。可以将此分区看做是system分区的补充,厂商定制ROM的一些功能都可以放在此分区。

双清就是指对data分区和cache分区进行清理。

boot分区:由 kernel 和 ramdisk 构成,内核就这这里

system分区:这个分区包含了整个操作系统除 kernel 和 ramdisk 之外的其它部分,包括 Android UI 和设备上预装的 APP。删除这个分区只会同步将 Android 系统从设备上卸载掉,而不会导致设备不能重启,因此你依然可以顺利让设备进入到 recovery 或 bootloader 模式来为它重新刷入一个新的 ROM。
recovery 分区:相当于一个备用的 boot 分区,利用它我们可以使设备启动到恢复模式窗口来进行一些高级的恢复和维护操作。

data分区:也被称作 userdata,是用户数据被存储的地方——也就是说你的联系人、短信、配置文件和你自己安装的 APP 都位于这里。删除这个分区相当于将你的设备恢复出厂设置,你的设备会变得和你第一次开机或最后一次刷入官方/自定义 ROM 后一样。你在设备上点击清除用户数据或恢复出厂设置按钮后,实际上清除掉的就是这个分区。

cache分区:存放的是 Android 系统中经常被访问的数据和 APP 的部件。删除这个分区不会对你的个人数据造成影响,这个分区上的数据会随着你继续使用设备被重新收集并存储在这里。

misc分区:包含了各种以开关量形式保存的系统配置,包括 CID(Carrier or Region ID)、USB配置和某些硬件配置等。这是个很重要的分区,如果它遭到了破坏或有数据丢失,那么设备的一些功能可能无法正常使用

Android系统的启动

启动:
概述:Loader > Kernel > Native > Framework > Application

细分:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher

Loader层主要包括Boot Rom和Boot Loader
Kernel层主要是Android内核层
Native层主要是包括init进程以及其fork出来的用户空间的守护进程、HAL层、开机动画等
Framework层主要是AMS和PMS等Service的初始化
Application层主要指SystemUI、Launcher的启动

bootloader分区分成两个部分,分别叫做primary bootloader和secondary stage bootloader。Primary bootloader主要执行硬件检测,确保硬件能正常工作后将secondary stage bootloader拷贝到内存(RAM)开始执行。Secondary stage bootloader会进行一些硬件初始化工作,获取内存大小信息等,然后根据用户的按键进入到某种启动模式

fastboot模式:fastboot是android定义的一种简单的刷机协议,用户可以通过fastboot命令行工具来进行刷机。比如说fastboot flash boot boot.img这个命令就是把boot.img的内容刷写到boot分区中

recovery模式:recovery是android定义的一个标准刷机协议。当进入recovery模式时,secondary stage bootloader从recovery分区开始启动,recovery分区实际上是一个简单的Linux系统,当内核启动完毕后,开始执行第一个程序init(init程序是Linux系统所有程序的老祖宗)。init会启动一个叫做recovery的程序(recovery模式的名称也由此而来)。通过recovery程序,用户可以执行清除数据,安装刷机包等操作

手机除了普通的CPU芯片以外,还有MODEM处理器芯片。该芯片的功能就是实现手机必需的通信功能,大家通常所的刷RADIO就是刷写modem分区。

系统OTA升级流程

非A/B升级

  • Android系统收到服务端下发的OTA推送,将OTA包下载至cache分区。
  • OTA包下载完成后,将向misc分区写入指令,表明下次启动时进入recovery模式并使用该OTA包进行升级。
  • 重启手机。
  • 重启后最先进入bootloader,bootloader会先判断按键组合、电源寄存器等,随后会读取misc分区的内容并解析。由于步骤2中已经向misc分区写入了指令,此处bootloader读取指令后会引导启动recovery系统。
  • 进入recovery,读取cache分区中的OTA包,并解析其中的升级脚本,按照其指令对系统各个分区进行升级。如果recovery自身也需要升级,会在此过程中向system中写入recovery-from-boot.p文件,这是一个recovery升级所需要的patch。
  • recovery会清除misc分区。
  • 重启手机。
  • 重启后最先进入bootloader,判断按键组合、电源寄存器、misc分区内容等,默认情况会启动Android系统,此时已经是OTA升级后的新版本系统。
  • 新版本Android系统启动后,会检查是否存在recovery-from-boot.p文件,如果存在,则会对recovery进行升级。

A/B升级

在Android O之后,Google引入了一种新的分区结构,称为A/B分区,与之对应,传统分区结构被称为non-A/B分区。

A/B分区结构,顾名思义,将系统分区分成了A和B两个槽(slot),手机启动时会选择A槽或者B槽启动,运行过程中仅使用当前槽位的分区。一旦当前运行的槽出现问题,系统仍可以选择另一个槽进行启动,从而保证系统良好的可用性。

采用A/B分区结构,能够实现无缝升级。例如用户正在运行A槽,此时收到OTA推送,则系统会在后台一边下载OTA数据,一边同时对B槽进行升级。当B槽系统升级完成,用户会收到重启提示,此时重启手机将自动切换到B槽的新版本系统。在此过程中,仅重启操作是会被用户感知的,这个重启与普通重启的耗时没有什么区别。

如果OTA失败,也仅仅是待升级的槽出现问题,可以重新尝试OTA,并不会影响用户当前运行的系统。

由于A/B分区结构可以实现一边从服务端获取OTA数据,一边直接写入待升级的槽,不需要临时存储OTA包的空间,因此不再需要在cache或userdata分区预留足够空间。

Android 系统的分区相关推荐

  1. android 手机分区失败怎么办,一种Android系统Data分区自修复方法及系统专利_专利查询 - 天眼查...

    1.一种Android系统Data分区自修复方法,其特征在于,包括: 步骤1: Android智能终端开机进入Android系统后,判断Data分区是否损坏,对Data分 区进行挂载,然后读取Data ...

  2. android frp分区,android系统的分区结构

    android系统的分区结构 转载 ANTIBili_MC 关注 (一)Android的主要分区 Modem分区bootloader分区boot分区recoverty分区system分区data分区1 ...

  3. Android系统的分区及img文件、移植烧写过程

    一.引言 本章介绍Android的几个分区,已经编译后生成的.img镜像文件,对于大家移植整个Android有一定的帮助.本人也首次接触Android,有不正确的地方,欢迎指正! 二.Android的 ...

  4. Android 系统的分区和文件系统(1)- Android 系统源码结构分析

    声明 本文分析Android系统源码各目录存放文件用途. 其中参考了一些书籍内容,仅供学习使用. 本文采用 LinesgeOS cm-14.1(等同于AOSP Android 7.1.1) 1. 整体 ...

  5. Android 系统的分区和文件系统(5)- Android Framework层上的工具和命令

    声明 Android系统中包含很多命令行工具,包括一些Linux继承来的工具,也有不少Android系统特有工具/命令,此篇介绍一些比较重要的工具/命令. 这些命令来自Android框架层(源码位置: ...

  6. linux给内存卡分区,Android系统手机内存卡分区详解

    这两天刷了2.2版本之后换了个内存卡,问题来了,需要把内存卡分区,下面就让把这两天分区的经验分享一下.不对的地方希望各位能指正,感谢.这里以我的国行G2作为说明,刷的是啊兴的2.2版本.参照了G1的分 ...

  7. Android 系统开发

    本文旨在记录在研究和开发 Android 系统的过程中学习到的星星点点,以备日后之用~ 内容包括:开发环境.安装程序.系统分区.目录概览.进程分析.内核对比. > 开发环境 1.安装 Eclip ...

  8. [无线] Android 系统开发学习杂记

    > 开发环境 1.安装 Eclipse 和 android-sdk 并解压安装 2.Eclipse 安装 AVD 插件 https://dl-ssl.google.com/android/ecl ...

  9. Android 进阶——Android 系统的基础术语和编译的相关理论小结

    文章大纲 引言 一.Android系统的分区 1./boot 引导分区 2./system 系统分区 3./recovery 恢复分区 刷入RE: 4./data 用户数据区 5./cache 数据缓 ...

最新文章

  1. Python中按值来获取指定的键
  2. BZOJ1922: [Sdoi2010]大陆争霸
  3. ue4蓝图节点手册中文_UE4蓝图解析(一)
  4. java 打印日志log_java如何LOG打印出日志信息
  5. C#: 8.0 和 9.0 常用新特性
  6. [转载] Python入门(输入/输出、数据类型、条件/循环语句)
  7. 信息学奥赛一本通 2019:【例4.4】求阶乘
  8. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡...
  9. SQL Server2012安装教程
  10. 三人抢答器逻辑电路图_数字电路3人抢答器实验报告.doc
  11. Log4j不同级别输出到不同文件的几种方式
  12. deeping操作系统修改已挂载卷名称
  13. 通用安防摄像机通过RTSP转RTMP推流进行H5(RTMP/HLS)直播的方案
  14. aspnet172海派电影视频点播分享影评网站
  15. UE5 植被系统详解
  16. Linux如何解压tar.xz文件
  17. 基于mongodb的标签系统设计
  18. 前端js中计时器的使用
  19. Angular4_修改你的appc-开头
  20. Axure-9 日历选择制作

热门文章

  1. PowerDesigner物理模型创建数据库
  2. 容器技术在分布式系统应用
  3. 红烧肉怎么做好吃 红烧肉的做法
  4. 使用Unity创造动态的2D水体效果
  5. 如何收取西联国外汇款(How to receive WesternUnion)
  6. 万字长文深度解读5G射频,国产机会在哪里?
  7. 【Appium】使用模拟器实现有道云App的安装卸载
  8. Redis Geospatial 地理位置 类型
  9. HackTheBox: Arctic靶场
  10. 机器学习(KNN二)——案例:鸢尾花数据分类