修改userdata 分区大小

解决EMMC存储容量问题
本文介绍了解决更换EMMC后内置存储卡容量显示错误的问题。通过调整BoardConfig.mk文件中的BOARD_USERDATAIMAGE_PARTITION_SIZE参数并重新烧写userdata分区,成功使系统正确识别到16G EMMC的全部容量。
AI助手已提取文章相关产品:

转自 http://blog.youkuaiyun.com/mike8825/article/details/49833833  

由于之前的EMMC(8Gflash,1G内存)的读写速度不给力,直接换了一个版本(16Gflash,2G内存),系统跑的好好的,但查看内置存储卡的容量只有5G(存储卡挂载在userdata分区),明明是16G的flash啊。

在一个同事的指导下,查看分区情况

adb shell cat /proc/partitions

 179        0   15388672 mmcblk0
 179        1      65536 mmcblk0p1
 179        2        512 mmcblk0p2
 179        3        512 mmcblk0p3
 179        4       1024 mmcblk0p4
 179        5       1024 mmcblk0p5
 179        6        512 mmcblk0p6
 179        7        512 mmcblk0p7
 179        8        768 mmcblk0p8
 179        9        768 mmcblk0p9
 179       10       1024 mmcblk0p10
 179       11       1536 mmcblk0p11
 179       12       1536 mmcblk0p12
 179       13       1024 mmcblk0p13
 179       14          1 mmcblk0p14
 179       15          8 mmcblk0p15
 179       16      10240 mmcblk0p16
 179       17         32 mmcblk0p17
 179       18       1536 mmcblk0p18
 179       19         16 mmcblk0p19
 179       20      32768 mmcblk0p20
 179       21    1258292 mmcblk0p21
 179       22      32768 mmcblk0p22
 179       23     262144 mmcblk0p23
 179       24      32768 mmcblk0p24
 179       25       1024 mmcblk0p25
 179       26        512 mmcblk0p26
 179       27      65536 mmcblk0p27
 179       28        512 mmcblk0p28
 179       29      32768 mmcblk0p29
 179       30       1024 mmcblk0p30
 179       31      10240 mmcblk0p31
 259        0     204800 mmcblk0p32
 259        1     307200 mmcblk0p33
 259        2   12931055 mmcblk0p34
 179       32       4096 mmcblk0rpmb
找来一台没换EMMC的机器来对比
 179        0    7634944 mmcblk0
 179        1      65536 mmcblk0p1
 179        2        512 mmcblk0p2
 179        3        512 mmcblk0p3
 179        4       1024 mmcblk0p4
 179        5       1024 mmcblk0p5
 179        6        512 mmcblk0p6
 179        7        512 mmcblk0p7
 179        8        768 mmcblk0p8
 179        9        768 mmcblk0p9
 179       10       1024 mmcblk0p10
 179       11       1536 mmcblk0p11
 179       12       1536 mmcblk0p12
 179       13       1024 mmcblk0p13
 179       14          1 mmcblk0p14
 179       15          8 mmcblk0p15
 179       16      10240 mmcblk0p16
 179       17         32 mmcblk0p17
 179       18       1536 mmcblk0p18
 179       19         16 mmcblk0p19
 179       20      32768 mmcblk0p20
 179       21    1258292 mmcblk0p21
 179       22      32768 mmcblk0p22
 179       23     262144 mmcblk0p23
 179       24      32768 mmcblk0p24
 179       25       1024 mmcblk0p25
 179       26        512 mmcblk0p26
 179       27      65536 mmcblk0p27
 179       28        512 mmcblk0p28
 179       29      32768 mmcblk0p29
 179       30       1024 mmcblk0p30
 179       31      10240 mmcblk0p31
 259        0     204800 mmcblk0p32
 259        1     307200 mmcblk0p33
 259        2    5177327 mmcblk0p34
 179       32        512 mmcblk0rpmb

mmcblk0即emmc的容量(单位kb),看来容量大小是正确读取到了,但mmcblk0p34(userdata)分区的大小不对。

找到device目录下的BoardConfig.mk文件,将BOARD_USERDATAIMAGE_PARTITION_SIZE的大小修改一下为(12931055*1024=13241400320)B,

BOARD_USERDATAIMAGE_PARTITION_SIZE := 13241400320

重新编译一下,烧写userdata分区(fastboot flash userdata userdata.img)

系统起来后,内置存储卡的容量正确识别到了。之前不知怎么修改这个容量,将这个数值改大了,导致挂载不了userdata分区(adb shell df查看),系统起不来的情况。

当然,换了一块性能更好的EMMC后,安兔兔跑分一下子提高了1500分。


您可能感兴趣的与本文相关内容

### Android 13 中 userdata 分区挂载方法及问题解决方案 在 Android 13 中,userdata 分区的挂载机制与之前的版本类似,但可能由于加密、权限管理或其他系统架构的变化而有所不同。以下内容详细介绍了 userdata 分区的挂载过程以及可能出现的问题和解决方案。 #### 1. userdata 分区的挂载流程 在 Android 系统启动过程中,userdata 分区的挂载涉及多个步骤,主要包括以下几个方面: - **元数据解密**:在开机过程中,系统会先挂载 `metadata` 分区,并使用该分区中保存的密钥对 `userdata` 分区的元数据进行解密[^2]。 - **文件系统初始化**:完成元数据解密后,系统会根据 `userdata.img` 文件中的配置信息初始化文件系统。此文件通常包含在烧录包中,并通过 `/device/platform/BoardConfig.mk` 中的参数定义其大小和格式[^4]。 - **挂载点设置**:最终,`userdata` 分区会被挂载到 `/data` 目录下,供系统和应用程序使用。 #### 2. userdata 分区大小调整 如果需要调整 `userdata` 分区大小,可以通过修改 `BoardConfig.mk` 文件中的相关参数实现。例如: ```makefile BOARD_USERDATAIMAGE_PARTITION_SIZE := 2097152000 # 设置为 2GB ``` 需要注意的是,`userdata` 分区大小调整仅在首次格式化时生效。因此,在实际操作中,建议在设备出厂前完成这一配置。 #### 3. 加密与权限管理 在 Android 13 中,`userdata` 分区通常启用文件级加密(File-Based Encryption, FBE)。这要求系统在挂载时提供正确的密钥。如果出现挂载失败的情况,可能是由于以下原因之一: - **密钥丢失或错误**:确保 `metadata` 分区中的密钥正确无误,并且能够成功解密 `userdata` 分区的元数据。 - **权限不足**:某些应用程序可能需要对 `/data` 目录下的子目录进行操作。可以通过 SELinux 策略或权限配置解决。例如,允许 `system_app` 对特定目录进行文件创建操作: ```bash chmod u+rwx /mnt/vendor/zlintek ``` #### 4. 常见问题及解决方案 以下是几个常见的 `userdata` 分区挂载问题及其解决方案: - **问题 1:挂载失败** - **原因**:可能是由于 `metadata` 分区损坏或密钥错误导致无法解密 `userdata` 分区的元数据。 - **解决方案**:检查 `metadata` 分区的完整性,并确保密钥正确无误。 - **问题 2:文件系统容量不足** - **原因**:`userdata` 分区大小未正确配置,导致存储空间不足。 - **解决方案**:调整 `BoardConfig.mk` 中的 `BOARD_USERDATAIMAGE_PARTITION_SIZE` 参数,并重新格式化分区[^4]。 - **问题 3:权限冲突** - **原因**:某些应用程序无法访问 `/data` 目录下的特定子目录。 - **解决方案**:检查 SELinux 策略,并确保相关应用程序具有足够的权限[^3]。 #### 示例代码 以下是一个简单的脚本示例,用于检查 `userdata` 分区的挂载状态: ```bash #!/system/bin/sh # 检查 userdata 分区是否已挂载 if mount | grep -q "/data type"; then echo "userdata 分区已成功挂载" else echo "userdata 分区挂载失败,请检查 metadata 和密钥" fi ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值