文章目录
本文作为 《Android 动态分区详解(一) 5 张图让你搞懂动态分区原理》 的补充,进一步解释 device mapper,dm-linear 以及动态分区。并通过 3 个实验来加强对 linear 设备以及 Android 动态分区的理解。
1. Android 动态分区的两重含义
Android 的动态分区是基于用户态的动态分区。
这句话有两重含义:
-
分区划分是动态的,可以变动的。
传统的 MBR 分区(即熟知的 DOS 分区) 和 GPT 分区预先把分区记录存储到磁盘上(通常在磁盘的起始位置),系统启动时读取分区数据,解析后创建相应的设备。如果修改了磁盘上的分区记录,必须要等到下一次重启时,系统再次读取分区数据,解析并创建设备才算生效。可见这里的分区在系统启动完成后,在下一次重启前是固定的,不能修改,是一种静态分区。
而动态分区,是在 Android 系统启动完成后,应用程序读取并解析动态分区数据( super 分区开始的 metadata),然后调用 device mapper 驱动创建相应的分区。也可以调用 device mapper 销毁和修改这些分区。总之,在一次操作系统的生命周期内(从系统上电启动,到系统掉电关闭),分区是可以变动的(增加,删除