高通平台如何新增加一个分区,并mount到android系统中

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 #

猜你喜欢

转载自blog.csdn.net/zhuyong006/article/details/85249825