如果是RK3399请参考: https://rangotec.com/blog/92.html
本文我们导出RK3588 Android12的用户分区; 由于系统卡在开机画面,我们先备份一下数据。
常见原因: 磁盘写满了。 因为Android 启动时需要在 /data 分区写入系统日志、数据库和临时锁文件, 一旦剩余空间为 0,系统进程(Zygote / SystemServer)就会无限崩溃重启,表现为卡死在开机画面。
如果直接从update.img镜像文件里读取parameter.txt , 得到的分区地址是不正确的,
如: @0x0080d000(userdata:grow)
但实际我们从系统里得到的是有偏移的,下面我们实际读取到的是 8442880(0x0080d400),与parameter.txt里的0x0080d000有400个扇区偏移。
操作步骤记录:
1. 首先我们进入adb模式,读取userdata的开始位置和大小(同一批正常设备)。
rk3588s_t:/ # cat /sys/class/block/mmcblk0p16/size
113716160
rk3588s_t:/ # cat /sys/class/block/mmcblk0p16/start
8442880
得到分区大小为113716160(十进制), 起始扇区为8442880(十进制)。
瑞芯微开发工具V3.32可直接填写扇区数量,这两个结果是计算好的,直接就可以用。
userdata对应哪个分区的方法见RK3399的文章:
Android 查看userdata分区开始位置及大小、导出userdata分区并修改用户数据分区里的文件
2. 进入loader模式
我这个rk3588的板子厂家按键焊死了,只能进入maskroom模式,我们用 adb reboot loader命令 进入loader模式。
$adb reboot loader
进入loader模式后,RKDevTool.exe 界面上的【读取Flash信息,读取Capability等】功能都可以正常使用了。
3. 输入起始扇区和扇区数,点击导出镜像:
如果分区特别大,那么需要非常长时间,工具output目录下的文件始终为零。
这不是错误,只要没报错,就耐心等着!!
如果镜像太大,超出20G, 那么我们需要分成多段导出,最后合并为一个镜像。 Windows下用copy /b 1.img + 2.img +3.img full.img 合并。
4. 挂载分区并编辑
Android下userdata分区通常为f2fs文件系统,把上面的分区导出img后,很多软件暂时不支持(打开后空白),可以通过下面的方式挂载到linux文件系统上,进行修改编辑。
$ mount -t f2fs -o loop /your/android_userdata.img /mnt
镜像挂载完成后,与常规操作方式一致,不再详述。