1. 问题描述:
在开发高通平台的android机型时,遇到了UFS芯片实际使用的是64G容量的存储芯片,但在android系统中的“设置>>存储>>存储大小”中看到却是16G,导致andriod系统仅能使用这16G进行运行,而无法使用实际的64G,本文针对此现象做了总结记录。
2. 解决方法:
2.1 两处代码修改
1、在amss的partition.xml中配置GROW_LAST_PARTITION_TO_FILL_DISK=true
2、在BoardConfig.mk中设置BOARD_USERDATAIMAGE_PARTITION_SIZE=“Left-over size” - 16KB
Left-over size的含义是:实际总空间大小 - 已经分配出去的大小
16K:数据加密功能使用分区的最后16KB来存储用于加密的raw footer
2.2 参数可通过下面步骤计算得出:
- 先执行一次恢复出场设置,即可将存储芯片上的实际用户空间临时释放出来
- cat /proc/partitions,找出data分区的大小,作为“Left-over size”
BOARD_USERDATAIMAGE_PARTITION_SIZE=“Left-over size” - 16KB
2.2.1 恢复出场设置前:
df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.7G 1.2M 2.7G 1% /dev
tmpfs 2.7G 0 2.7G 0% /mnt
/dev/block/sda13 11M 160K 11M 2% /metadata
/dev/block/dm-4 826M 823M 2.5M 100% /
/dev/block/dm-5 207M 207M 644K 100% /system_ext
/dev/block/dm-6 588M 587M 1.8M 100% /vendor
/dev/block/dm-7 168M 167M 516K 100% /product
tmpfs 2.7G 0 2.7G 0% /apex
tmpfs 2.7G 264K 2.7G 1% /linkerconfig
/dev/block/sde4 140M 36M 104M 26% /vendor/firmware_mnt
/dev/block/sde9 27M 24M 3.6M 87% /vendor/dsp
/dev/block/sda2 27M 764K 26M 3% /mnt/vendor/persist
/dev/block/sde5 64M 736K 63M 2% /vendor/bt_firmware
/dev/block/dm-8 10G 518M 9.4G 6% /data
tmpfs 2.7G 0 2.7G 0% /data_mirror
/data/media 10G 518M 9.4G 6% /mnt/runtime/default/emulated
/dev/fuse 10G 518M 9.4G 6% /mnt/user/0/emulated
2.2.2 恢复出场设置后:
console:/ # df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 2.7G 1.2M 2.7G 1% /dev
tmpfs 2.7G 0 2.7G 0% /mnt
/dev/block/sda13 11M 144K 11M 2% /metadata
/dev/block/dm-4 826M 823M 2.5M 100% /
/dev/block/dm-5 207M 207M 644K 100% /system_ext
/dev/block/dm-6 696M 694M 2.1M 100% /vendor
/dev/block/dm-7 168M 167M 516K 100% /product
tmpfs 2.7G 0 2.7G 0% /apex
tmpfs 2.7G 264K 2.7G 1% /linkerconfig
/dev/block/sde4 140M 36M 104M 26% /vendor/firmware_mnt
/dev/block/sde9 27M 24M 3.6M 87% /vendor/dsp
/dev/block/sda2 27M 764K 26M 3% /mnt/vendor/persist
/dev/block/sde5 64M 736K 63M 2% /vendor/bt_firmware
/dev/block/dm-8 49G 1.2G 48G 3% /data
tmpfs 2.7G 0 2.7G 0% /data_mirror
/data/media 49G 1.2G 48G 3% /mnt/runtime/default/emulated
/dev/fuse 49G 1.2G 48G 3% /mnt/user/0/emulated
cat /proc/partitions
major minor #blocks name
...
...
253 0 860372 dm-0
253 1 216056 dm-1
253 2 174708 dm-2
253 3 725436 dm-3
253 4 846708 dm-4
253 5 212564 dm-5
253 6 713908 dm-6
253 7 171868 dm-7
253 8 51457868 dm-8 //由df -h可知data分区为dm-8
3. 代码提交参考
--- a/device/qcom/sm6150/BoardConfig.mk
+++ b/device/qcom/sm6150/BoardConfig.mk
@@ -145,7 +145,8 @@ TARGET_USERIMAGES_USE_EXT4 := true
TARGET_USERIMAGES_USE_F2FS := true
BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := f2fs
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000
-BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240
+#BOARD_USERDATAIMAGE_PARTITION_SIZE := 10737418240
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 52692824064
BOARD_PERSISTIMAGE_PARTITION_SIZE := 33554432
BOARD_METADATAIMAGE_PARTITION_SIZE := 16777216
BOARD_DTBOIMG_PARTITION_SIZE := 0x0800000
(本文原创地址为: 高通平台如何正确设置userdata分区的大小-CSDN博客 转载请注明出处)