1.首先需要更改partition.xml文件,在userdata的前面增加一个temp的分区,这里要注意的是userdata的分区大小需要同步的减小,还有一点需要留意,temp分区的UUID需要改一下
\MSM8953.LA.2.0\common\config
...................
<partition label="qpdata2" size_in_kb="10240" type="5AF80809-AABB-4943-9168-CDFC38742599" bootable="false" readonly="false" filename="" />
<partition label="temp" size_in_kb="65536" type="546b0fd8-ff9f-46e1-8f7f-24b39c4da857" bootable="false" readonly="false" filename="temp.img" sparse="true"/>
<partition label="userdata" size_in_kb="2973696" type="1B81E7E6-F50D-419B-A739-2AEEF8DA3335" bootable="false" readonly="false" filename="userdata.img" sparse="true"/>
</physical_partition>
</configuration>
2.修改Android侧的userdata的分区大小,注意这里的大小是partition.xml中的值乘以1024,修改后需要重新编译userdata.img
\device\qcom\msm8953_64\BoardConfig.mk
3.我们还需要创建一个ext4格式的temp.img文件,我们希望这个文件在整包烧录的时候能够烧录到对应的temp分区中
root@Jon:/home/jon/code/M2/out/host/linux-x86/bin# ./make_ext4fs -s -l 64M -a temp ./temp.img ./logdump/
Creating filesystem with parameters:
Size: 67108864
Block size: 4096
Blocks per group: 32768
Inodes per group: 4096
Inode size: 256
Journal blocks: 1024
Label:
Blocks: 16384
Block groups: 1
Reserved block group size: 7
Created filesystem with 12/4096 inodes and 1294/16384 blocks
这里说明下三个选项的意思:
" -l " : 指明分区的img大小,我们这儿是64M
" -a " : 对应的是Android系统的挂载点
" -s " :这是按照生成ext4的sparse模式制作,这个参数是对应的第一步partition.xml中的sparse=“true” ,啥意思呢:sparse中文的意思是稀疏的意思,意味着生成的分区.img会将所有为0的地方压缩,从而节省空间。
我们不妨来对比下文件(生成的temp.img并非ext4格式):
root@Jon:/home/jon/code/M2/out/host/linux-x86/bin# file temp.img
temp.img: Android sparse image, version: 1.0, Total of 16384 4096-byte output blocks in 12 input chunks.
我们将其转为linux的ext4格式看看
root@Jon:/home/jon/code/M2/out/host/linux-x86/bin# ./simg2img temp.img temp_ext4.img
root@Jon:/home/jon/code/M2/out/host/linux-x86/bin# file temp_ext4.img
temp_ext4.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-bf67-946fc0f9f25b (extents) (large files)
然后我们来对比下:
root@Jon:/home/jon/code/M2/out/host/linux-x86/bin# ls -l temp*
-rw-r--r-- 1 root root 67108864 12鏈25 16:29 temp_ext4.img
-rw-r--r-- 1 root root 5300396 12鏈25 16:19 temp.img
很明显,temp_ext4.img大小为64M,但是temp.img却只有5M,空间少了很多
4.修改Android侧的fstab.qcom,加入系统启动的默认挂载行为
\device\qcom\msm8953_64\fstab.qcom
扫描二维码关注公众号,回复: 4854817 查看本文章
/dev/block/bootdevice/by-name/temp /temp ext4 defaults defaults
5.在Android根节点下创建挂载点" /temp "
\system\core\rootdir\init.rc
6.将相关生成的文件和userdata.img放入common中,重新完成构建和拆包,烧入系统后开机,系统开机后我们可以执行mount指令,看下挂载情况如下:
7.当然我们还可以手动的挂载/卸载分区
msm8953_64:/ #
msm8953_64:/ # umount /temp
msm8953_64:/ # mount -t ext4 /dev/block/mmcblk0p51 /temp/
看看里面的内容如下:
msm8953_64:/ # cd temp/
msm8953_64:/temp # ls
logdump.txt lost+found
msm8953_64:/temp #