欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

Android系统中如何导出分区镜像

Android 迷途小书童 1年前 (2023-08-17) 1190次浏览 0个评论

环境

  • android 9
  • mtk方案

简介

本文介绍了如何导出 Android 设备的分区镜像。通过使用 Android Debug BridgeADB)工具,可以与设备进行通信并获取特定分区的副本,如 system 分区、boot 分区和 recovery 分区。文章提供了简单的步骤指南,导出的镜像文件可以用于设备备份、分析、修改或还原。然而,对设备分区的操作需要谨慎,请确保了解相关风险并遵守法律和政策。

实操

这边的情况是串口输出,因此可以直接进入 Android 系统终端

# 切换到root权限
su

# 保存在本地存储上,by-name文件夹下面有多个镜像,如常见的boot、system、recovery、userdata等,需要哪个就导出哪个
cat /dev/block/platform/$平台/by-name/boot > /mnt/shell/emulated/0/boot.img

# 也可以使用dd命令
dd if=/dev/block/platform/$平台/by-name/boot of=/mnt/shell/emulated/0/boot.img

导出的镜像需要保存下来,这里可以使用系统内的存储位置(要求可写),或者是外部的存储,比如接个 U 盘,然后通过 mount 命令查看设备是否上线以及对应的挂载点,这样就可以写入保存了。

如果无法像我这里一样直接进入系统终端,可以在 PC 上通过网络的方式进行 adb 连接,提前是 Android 设备能够进入开发者模式,这里以 windows 为例,打开 cmd

# 这步需要在设备上确认连接
adb connect $Android设备的IP

# 在连接的 Android 设备上启动一个交互式的 shell 终端
adb shell

# 使用dd导出
dd if=/dev/block/platform/$平台/by-name/boot of=/mnt/shell/emulated/0/boot.img

# 重新开启一个cmd,然后拉取文件到本地电脑
adb pull /mnt/shell/emulated/0/boot.img .

FAQ

"* daemon not running. starting it now on port 5038 *
ADB server didn't ACK
* failed to start daemon *
error: cannot connect to daemon"

这个错误一般是由于没有执行 su 命令引起的。

如果执行了 su 也无法解决的话,可以先尝试重新启动下 Android 设备,然后去看看端口5038是否已经被打开

netstat -ano | grep 5038

接着重启下 adb 的服务,命令如下

adb kill-server
adb start-server

参考资料

喜欢 (0)

您必须 登录 才能发表评论!