当我们需要修改或者提取安卓系统文件时,可以使用U盘启动到armbian,读取eMMC里安卓系统的分区信息,挂载到本地,方便对系统文件进行修改、提取、移植或者备份。S922X的阿里CT2000的当贝固件分区表如下:
操作步骤如下:
安装晶晨分区工具ampart:
git clone https://github.com/7Ji/ampart.git
cd ampart
make
读取分区信息(一般是mmcblk2,可用lsblk命令查看):
ampart /dev/mmcblk2
输出内容如下:
0: bootloader 0 ( 0.00B) 400000 ( 4.00M) 0
(GAP) 2000000 ( 32.00M)
1: reserved 2400000 ( 36.00M) 4000000 ( 64.00M) 0
(GAP) 800000 ( 8.00M)
2: cache 6c00000 ( 108.00M) 46000000 ( 1.09G) 2
(GAP) 800000 ( 8.00M)
3: env 4d400000 ( 1.21G) 800000 ( 8.00M) 0
(GAP) 800000 ( 8.00M)
4: logo 4e400000 ( 1.22G) 800000 ( 8.00M) 1
(GAP) 800000 ( 8.00M)
5: recovery 4f400000 ( 1.24G) 1800000 ( 24.00M) 1
(GAP) 800000 ( 8.00M)
6: misc 51400000 ( 1.27G) 800000 ( 8.00M) 1
(GAP) 800000 ( 8.00M)
7: dtbo 52400000 ( 1.29G) 800000 ( 8.00M) 1
(GAP) 800000 ( 8.00M)
8: cri_data 53400000 ( 1.30G) 800000 ( 8.00M) 2
(GAP) 800000 ( 8.00M)
9: param 54400000 ( 1.32G) 1000000 ( 16.00M) 2
(GAP) 800000 ( 8.00M)
10: boot 55c00000 ( 1.34G) 1000000 ( 16.00M) 1
(GAP) 800000 ( 8.00M)
11: rsv 57400000 ( 1.36G) 1000000 ( 16.00M) 1
(GAP) 800000 ( 8.00M)
12: metadata 58c00000 ( 1.39G) 1000000 ( 16.00M) 1
(GAP) 800000 ( 8.00M)
13: vbmeta 5a400000 ( 1.41G) 200000 ( 2.00M) 1
(GAP) 800000 ( 8.00M)
14: tee 5ae00000 ( 1.42G) 2000000 ( 32.00M) 1
(GAP) 800000 ( 8.00M)
15: vendor 5d600000 ( 1.46G) 14000000 ( 320.00M) 1
(GAP) 800000 ( 8.00M)
16: odm 71e00000 ( 1.78G) 8000000 ( 128.00M) 1
(GAP) 800000 ( 8.00M)
17: system 7a600000 ( 1.91G) 50000000 ( 1.25G) 1
(GAP) 800000 ( 8.00M)
18: product cae00000 ( 3.17G) 8000000 ( 128.00M) 1
(GAP) 800000 ( 8.00M)
19: data d3600000 ( 3.30G) 2d0800000 ( 11.26G) 4
可以看到一共有19个分区,这里以挂载system分区为例进行演示:
17: system 7a600000 ( 1.91G) 50000000 ( 1.25G) 1
上面可以找到偏移量为:7a600000
接着操作,执行下面命令,设置一个变量,将偏移量转换为10进制数据:
offset=$(printf "%d" 0x7a600000)
创建挂载点目录(可以自己定义):
mkdir -p /mnt/system
挂载分区:
mount -o loop,offset=$offset /dev/mmcblk2 /mnt/system
完成后就可以在/mnt/system中就可以看到system分区的文件数据了,方便我们修改、提取、移植系统驱动等文件,其他分区的挂载方法也是一样的,一定要把偏移量转化为10进制,才可以正常挂载。
需要卸载分区的话,执行下面命令:
umount /mnt/system