TF101 Android:通过 adb 实现图像块设备

TF101 Android:通过 adb 实现图像块设备

我有一台运行 Android ICS 的华硕 TF101 平板电脑。我正尝试通过 adb 将整个内部闪存文件系统映像到我的桌面上。问题是我获得的图像似乎已损坏:

在我的桌面上我使用的是 Ubuntu 12.10:

adt-bundle-linux-x86-20131030/sdk/platform-tools/adb shell su -c "dd if=/dev/block/mmcblk0" | pv > mmcblk0.raw

然后我尝试将此图像用于:

testdisk mmcblk0.raw

不幸的是,即使使用深度搜索,testdisk 也只能找到无意义的分区数据。尝试列出这些无意义分区中包含的任何文件都会导致文件系统损坏错误。

即使尝试只读取单个分区,例如

adt-bundle-linux-x86-20131030/sdk/platform-tools/adb shell su -c "dd if=/dev/block/mmcblk0p7" | pv > mmcblk0p7.raw

生成的分区映像似乎已损坏。尝试通过循环设备挂载失败,出现损坏的文件系统错误。在映像上运行 fsck 后,我遇到了无休止的文件系统错误。

有什么提示我在这里做错了什么吗?

答案1

我知道这个话题已经过时了,但这可能对某些人有帮助:如果你可以安装经过修改的恢复,它将非常有用,在系统开启的情况下转储并不总是一个好主意。然后试试这个:

adb shell "dd if=/dev/block/mmcblk0" | dd of=mmcblk0

为了获得最佳结果,执行转储时应卸载文件系统。

答案2

首先,Android 端的 shell 正在将 LF 转换为 CR-LF——十六进制 0A 至 0D 0A各种解决方法包括通过sed或流式传输来撤消更改perl、之后处理文件或安装stty在 Android 设备上并使用stty raw作为命令的一部分adb shell

答案3

必须使用双引号。(使用 Gingerbread 2.3.4)

adb shell 'su -c "dd if=/dev/block/mmcblk0"' | dd of=data.raw

相关内容