https://www.zhihu.com/question/39030945
https://dhexx.cn/news/show-623006.html?action=onClick

---------------------------------一、查看分区情况---------------------------------

https://blog.csdn.net/feelabclihu/article/details/135710099

1./dev/block目录

/dev/block/bootdevice路径下面,sd*开头的都是一个个物理分区
/dev/block/by-name是对应的分区名称

2.实例讲解

rk3399为例:

通过find /dev/block/ -name boot可以查看出boot分区对应哪个块设备,结果返回/dev/block/platform/fe330000.sdhci/by-name/boot,查看所有的分区:

那么/dev/block/mmcblk1p6就为boot分区了,其它同理。

---------------------------------二、Android系统分区进化史---------------------------------

https://huaweicloud.csdn.net/64ec3edc2ea0282871eaaf6a.html
https://huaweicloud.csdn.net/6335637ed3efff3090b551c4.html
安卓分区架构发展史为:onlyA,AB,onlyA动态分区,AB动态分区,VAB架构。VAB架构,其实就是AB分区,套上了动态分区,再解决了AB分区的空间占用问题。

https://blog.csdn.net/m0_67268286/article/details/125128226
https://blog.csdn.net/u011283906/article/details/126167957
https://blog.csdn.net/Jason_Lee155/article/details/131701975
https://www.bilibili.com/read/cv22932133/
https://zhuanlan.zhihu.com/p/364003927

一、传统分区(onlyA或non-A/B )

https://blog.csdn.net/qq_53676406/article/details/131470876
https://www.jianshu.com/p/f40c71f74f9c?utm_campaign=maleskine

分区结构

https://blog.csdn.net/haoren_xhf/article/details/118691920

  • /boot
    Boot 引导分区
    存放启动和引导的文件
    包含 Kernel/内核 和 Ramdisk/虚拟内存
    开机启动相关引导
    如果 boot 分区损坏通常就卡在开机第一个 LOGO 界面

  • /system
    System 系统分区
    存放整个安卓操作系统和系统预装软件
    此分区损坏会卡在开机的第二屏 就是开机的动画界面 无法进入系统

  • /vendor
    Vendor 包含了开发厂商私有的可执行程序、库、系统服务和 app 等
    可以将此分区看做是 system 分区的补充
    厂商定制 ROM 的一些功能都可以放在此分区
    该分区主要包含开发厂商的定制应用与库文件
    部分厂商会把 Vendor 分区置于 System 分区中便于后期更新维护

  • /userdata
    Data 数据分区
    存放用户数据,包括应用、音视频、图片、文档、系统设置等
    擦除这个分区相当于清空所有软件的数据
    包括各种软件和文件资料还有系统的各项设置
    但是不会影响手机的正常启动

  • /cache
    缓存区
    可以帮助你快速的打开系统最常访问的数据和应用程序
    不需要重复加载
    擦除缓存的话并不会影响个人数据而新的缓存也会在后续生成进来

  • /recovery
    Recovery 恢复分区
    存放着一个小 linux 系统用于恢复和更新其她分区的内容
    包含一个简易的 Linux 系统 类似于 Windows PE 可以理解为一个非常简易的操作系统
    用于恢复和维护手机还可以对其他分区进行 重启/Reboot 擦除/Wipe Data 等操作
    所以说我们刷机刷系统的时候 很多都是在这个 Recovery 分区进行的
    不过现在也出现了越来越多不存在 Recovery 分区的手机

  • /misc
    主要用于 Android 系统和 bootloader 通信
    使 Android 系统能够重启进入 recovery 系统并执行相应操作

OTA升级方案
    Android 系统收到服务端下发的 OTA 推送将 OTA 包下载至 cache 分区

    OTA 包下载完成后将向 misc 分区写入指令
    表明下次启动时进入 recovery 模式并使用该 OTA 包进行升级

    重启手机

    重启后最先进入 bootloader
    bootloader 会先判断按键组合以及电源寄存器等
    随后会读取 misc 分区的内容并解析
    由于前面中已经向 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分区

始于Android7.0
https://blog.csdn.net/guyongqiangx/article/details/71516768
https://baijiahao.baidu.com/s?id=1663549913509736147&wfr=spider&for=pc
https://blog.csdn.net/u013306216/article/details/102570202 (讲解详细,但是收费。)
将 Boot、System 等分区变为两套

分区结构
  • bootloader 分区
    功能同传统 non-A/B 分区的 bootloader
    只是此处会根据 A/B 槽的 bootable、successful、active 等标识来选择启动哪个槽
    根据不同厂商的实现可以是唯一的不区分 A/B 的 bootloader 也可以自定义

  • boot_a 分区和 boot_b 分区
    包含 kernel 和 recovery 的 ramdisk
    recovery 打包在 boot 分区中
    所以不再需要 recovery 分区
    并且 recovery 系统也不再负责 OTA 升级转而由 Android 系统中 update_engine 服务负责
    此时 recovery 仅负责双清等其她操作
    这里需要说明一下 recovery 集成在 boot 中是由 TARGET_NO_RECOVERY 和 BOARD_USES_RECOVERY_AS_BOOT 等变量决定的

  • system_a 分区和 system_b 分区
    功能同传统的 system 分区一样
    只是区分了 A 和 B 两个槽

  • vendor_a 分区和 vendor_b 分区
    功能同 non-A/B 的 vendor 分区
    只是区分了 A 和 B 两个槽

  • data 分区
    功能同 non-A/B 的 userdata
    并且用户数据仅存储一份 不区分 A/B

  • misc 分区
    功能同 non-A/B 的 misc 且不区分 A/B

  • persist 分区
    用来存储一些持久化数据
    不会随着 双清 或 OTA 等操作被清除
    也不区分 A/B

  • 示例分区:

Slot A
    /boot_a
        recovery_a
    /system_a
    /vendor_a
Slot B
    /boot_b
        recovery_b
    /system_b
    /vendor_b
/cache
/data
/misc
/persist

三、onlyA动态分区

四、AB动态分区

五、虚拟A/B分区(VAB)

为解决占用双倍 System 分区问题,采用新的 虚拟 AB 分区 VAB。
https://blog.csdn.net/guyongqiangx/article/details/128071692

六、Android10动态分区

https://zhuanlan.zhihu.com/p/364003927
https://blog.csdn.net/u012932409/article/details/105075851
https://blog.csdn.net/jackone12347/article/details/122116209
https://blog.csdn.net/guyongqiangx/article/details/123899602 (非常之详细)

1.android10各镜像文件说明

http://xinyiworld.top/wordpress_it/?p=10413

---------------------------------三、Android分区挂载原理---------------------------------

https://blog.csdn.net/feelabclihu/article/details/135710099

---------------------------------四、常见分区操作---------------------------------

1.清除数据分区

https://blog.51cto.com/u_16213329/8793999


0 条评论

发表回复

您的电子邮箱地址不会被公开。