android remount 在调试android 系统的时候是个非常有用的调试手段, 有remount 的帮助, 可以轻松的修改系统分区的某些文件,或者在系统分区添加删除文件。但有时候remount 也会因为一些verity, checkpoint ,和remount 自身的一些原因不能正常工作。最近因为工作原因,对remount 的机制进行了一个大概的了解。
remount的工作原理:
android 系统native 层通过overlayfs 将只读的系统分区改变成了 “可读可写” 的分区。拿vendor 分区作为例子:
图1 vendor by overlayfs
reomunt 后, 系统工作的概图如下:
图2 runtime
remount 的时候, 在data 分区或者 super 分区通过dm linear 创建了scratch 分区。 系统中的各个分区以erofs 的文件类型mount 到各个mount point 。 而upper 中的文件目录以在/mnt/scratch/overlayfs 目录中。 通过overlayfs 文件系统, 将lower_dir 和 upper_dir 建立起来。 修改或增减的文件,会在upper_dir 中。 这样, 可读可写的各个系统分区就准备好了。
remount 的流程:
- 建立scratch 分区
- make f2fs on scratch
- 建立overlayfs 文件系统 , 如lower_dir = /system , upper_dir=/mnt/scratch/overlayfs/system/upper
- 重启的时候, 流程如下图
文章来源:https://www.toymoban.com/news/detail-489628.html
图3 开机时的调用流程图 文章来源地址https://www.toymoban.com/news/detail-489628.html
- 重启后, 如果执行 adb remount ,那么 fs_mgr_overlayfs_mount 会被重新调用, 将readonly 的属性去掉。就可以读写系统分区了。
到了这里,关于android remount 工作原理简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!