Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
背景:
由于产品的OTA diff升级包比较大,无法放在cache分区,而直接去增大cache分区浪费存储空间。因此将diff包放在了/sdcard目录即/data分区。出现如下error log:
[ 1.210802] E:failed to mount /data (Invalid argument)
调试过程:
恢复出厂设置后/data可以挂载,在恢复出厂设置前添加mount动作,确认是否升级流程有差异,结果失败。
尝试在recovery模式下使用命令行挂载f2fs,失败。
验证rk3288平台,挂载成功。对比rk3288和rk3399平台/data,发现rk3288使用ext4,而rk3399使用f2fs格式。
将rk3399的/data分区修改成ext4,可以正常挂载,可能和分区格式相关。
查看rk3399 fstab,发现使用的是fstab.rk30board.bootmode.forceencrypt.emmc而不是fstab.rk30board.bootmode.emmc,两者文件的差异之一在于是否使用forceencrypt属性。
使用fstab.rk30board.bootmode.emmc即不对/data分区不做加密,问题解决。
解决方法:
解除/data分区加密。
kris@eco:~/rk3399/device/rockchip/rk3399$ g df
diff --git a/rk3399_mid.mk b/rk3399_mid.mk
index 7f79021..6569a83 100755
--- a/rk3399_mid.mk
+++ b/rk3399_mid.mk
[url=home.php?mod=space&uid=1999721]@@[/url] -36,7 +36,8 @@ BUILD_WITH_GOOGLE_MARKET_ALL := false
BUILD_WITH_GOOGLE_FRP := false
#for data encrypt options
-BUILD_WITH_FORCEENCRYPT := true
+#Kris, 190415, solve /data/ can't mount issue in recovery mode.
+#BUILD_WITH_FORCEENCRYPT := true
#for GMS Certification
BUILD_WITH_GMS_CER := false
此改动应该不会有什么问题,因为官网也有提到未来全盘加密的功能会被移除掉。
而改成ext4格式的解决方法可能对数据访问的效率有影响,毕竟f2fs的设计初衷就是提高小数据文件的传输效率。
原作者:KrisFei