[RK3399][Android7.1] 调试笔记 --- Recovery模式下无法挂载/data分区

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)

调试过程:

  1. 恢复出厂设置后/data可以挂载,在恢复出厂设置前添加mount动作,确认是否升级流程有差异,结果失败。
  2. 尝试在recovery模式下使用命令行挂载f2fs,失败。
  3. 验证rk3288平台,挂载成功。对比rk3288和rk3399平台/data,发现rk3288使用ext4,而rk3399使用f2fs格式。
  4. 将rk3399的/data分区修改成ext4,可以正常挂载,可能和分区格式相关。
  5. 查看rk3399 fstab,发现使用的是fstab.rk30board.bootmode.forceencrypt.emmc而不是fstab.rk30board.bootmode.emmc,两者文件的差异之一在于是否使用forceencrypt属性。
  6. 使用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
@@ -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

此改动应该不会有什么问题,因为官网也有提到未来全盘加密的功能会被移除掉。
[RK3399][Android7.1] 调试笔记 --- Recovery模式下无法挂载/data分区_第1张图片

而改成ext4格式的解决方法可能对数据访问的效率有影响,毕竟f2fs的设计初衷就是提高小数据文件的传输效率。


参考:
加密[Google]
f2fs.txt
Android 切换F2FS 文件系统

你可能感兴趣的:(子类__Recovery,RK3399)