android - 挂载Android模拟器创建的qcow2镜像

标签 android emulation qemu mount user-data

我正在尝试挂载 Android 模拟器创建的 userdata-qemu.img.qcow2 文件。以下过程不起作用:

sudo qemu-nbd -c /dev/nbd0 ~/.android/avd/Pixel_C_API_27.avd/userdata-qemu.img.qcow2

第一个命令运行良好,但正在运行

sudo qemu-nbd -c /dev/nbd0 ~/.android/avd/Pixel_C_API_27.avd/userdata-qemu.img.qcow2

结果如下:

Fehler: /dev/nbd0: unbekannte Partitionstabelle
Modell: Unbekannt (unknown)                                               
Festplatte  /dev/nbd0:  3146MB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: unknown
Disk-Flags: 

基本上无法识别镜像文件中的分区表。您可能想知道输出是什么

fdisk /dev/nbd0 -l

所以这里是:

Medium /dev/nbd0: 3 GiB, 3145728000 Bytes, 6144000 Sektoren
Einheiten: sectors von 1 * 512 = 512 Bytes
Sektorengröße (logisch/physisch): 512 Bytes / 512 Bytes
I/O Größe (minimal/optimal): 512 Bytes / 512 Bytes

正如您所预料的那样,挂载当然会失败,因为如果分区表本身也无法识别,则无法识别分区。感谢您的帮助!

编辑:我刚刚发现问题一定与 Android 的用户数据加密有关。由于我从未更改过任何密码,因此模拟器的用户数据分区的加密密码必须是默认的“default_password”。如何解密镜像才能安装它?

最佳答案

您可以使用以下过程挂载userdata-qemu.img.qcow2

  1. 将图像转换为原始图像

    qemu-img 转换 -O raw userdata-qemu.img.qcow2 udata-raw.img

  2. 使用losetup设置用于挂载的环回设备

    sudo losetup -f -P userdata.img

  3. 使用losetup -l查看设置了什么设备

    losetup -l
    NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                DIO
    /dev/loop0         0      0         0  0 /path/to/userdata.img   0
    
  4. mount the drive

    mkdir /tmp/mnt
    sudo mount /dev/loop0 /tmp/mnt
    

Then ls /tmp/mnt/ gives

app  benchmarktest  benchmarktest64  lost+found  misc  nativetest nativetest64

关于android - 挂载Android模拟器创建的qcow2镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039315/

相关文章:

java - 输入过滤器清除预加载文本

java - 如何获取字符串的第一个符号

android - 如何在Flutter中插值IconData中的变量?

java - 安卓。设置左/右边距不起作用

ubuntu - Bochs:显示库 'sdl' 不可用

java - Eclipse 中的 Android 相机/网络摄像头模拟器不断崩溃

android - 如何从 NetBeans 直接在手机上运行 J2ME 应用程序?

docker - 在 OS X 上使用 Docker 模拟 Raspberry Pi

xcode - 在 Ubuntu 上下载 MACOS VMWARE 并运行 Xcode 时遇到的问题

c - qemu arm ubuntu 磁盘镜像中出现段错误?