挂载由Android模拟器创建的qcow2图像

时间:2018-02-28 22:00:16

标签: 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的用户数据加密有关。由于我从未更改任何密码,因此模拟器的userdata分区的加密密码必须是默认密码“default_password”。如何解密图像以便能够安装它?

1 个答案:

答案 0 :(得分:2)

您可以使用以下步骤挂载userdata-qemu.img.qcow2

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

    qemu-img convert -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. 安装驱动器

    mkdir /tmp/mnt
    sudo mount /dev/loop0 /tmp/mnt
    
  5. 然后ls /tmp/mnt/给出了

    app  benchmarktest  benchmarktest64  lost+found  misc  nativetest nativetest64