You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APEX如何挂载至循环设备?为何关联完整APEX压缩包

APEX压缩包中apex_payload.img的循环设备挂载原理

刷入Android调试镜像后,通过adb root;adb shell获取root权限,查看挂载信息会发现大量loop设备挂载的是完整的APEX文件:

/dev/block/loop20 on /apex/com.android.apex.cts.shim@1 type ext4 (ro,dirsync,seclabel,nodev,noatime)
/dev/block/loop21 on /apex/com.android.vndk.v34@1 type ext4 (ro,dirsync,seclabel,nodev,noatime)

查看loop设备的备份文件指向的是完整APEX包:

# cat /sys/devices/virtual/block/loop20/loop/backing_file
/system/apex/com.android.apex.cts.shim.apex

而APEX本身是zip格式压缩包,内部包含apex_payload.img这个ext4镜像:

# file /system/apex/com.android.apex.cts.shim.apex
/system/apex/com.android.apex.cts.shim.apex: Zip archive data, requires at least v1.0 to extract
# unzip -l /system/apex/com.android.apex.cts.shim.apex
Archive:  /system/apex/com.android.apex.cts.shim.apex
  Length      Date    Time    Name
---------  ---------- -----   ----
      644  2009-01-01 00:00   META-INF/MANIFEST.MF
     1124  2009-01-01 00:00   AndroidManifest.xml
       40  2009-01-01 00:00   resources.arsc
     1032  2009-01-01 00:00   apex_pubkey
      779  2009-01-01 00:00   META-INF/CERT.SF
     1722  2009-01-01 00:00   META-INF/CERT.RSA
   274432  2009-01-01 00:00   apex_payload.img
    57875  2009-01-01 00:00   assets/NOTICE.html.gz
       29  2009-01-01 00:00   apex_manifest.pb
      884  2009-01-01 00:00   apex_build_info.pb
---------                     -------
   338561                     10 files

核心原理:循环设备的偏移量挂载

循环设备本身支持基于文件偏移量的挂载——不需要单独提取出apex_payload.img,系统会先解析APEX这个zip包,找到apex_payload.img在整个APEX文件中的起始字节偏移和文件大小。

在绑定loop设备时,系统会指定这两个参数:让loop设备只读取APEX文件中从该偏移地址开始、对应大小的那一段数据。这段数据正好就是完整的ext4镜像,因此可以直接被挂载为只读的ext4文件系统。

另外需要注意:APEX包中的apex_payload.img是未压缩存储的,只有这样系统才能通过字节偏移直接定位并读取镜像内容,同时结合dm-verity完成完整性校验。

内容的提问来源于stack exchange,提问作者chriskot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:03:20