你已经回答了你自己的问题,但我会扩大一点。 Android SDK中带有系统的图像,例如:
$ cd android-sdk-linux/system-images/android-15/armeabi-v7a/
$ ls *.img
ramdisk.img system.img userdata.img
$ cd ~/.android/avd/<img name>.avd/
$ ls *.img
cache.img sdcard.img userdata.img userdata-qemu.img
虽然,不是所有图像是相同的类型的:
$ file *.img
cache.img: VMS Alpha executable
sdcard.img: x86 boot sector, code offset 0x5a, OEM-ID "MSWIN4.1", sectors/cluster 4, Media descriptor 0xf8, sectors 2048000 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 3993, reserved3 0x800000, serial number 0x17de3f04, label: " SDCARD"
userdata.img: VMS Alpha executable
userdata-qemu.img: VMS Alpha executable
由于sdcard.img
不包含额外的分区,它可以直接安装而不偏移参数(如-o loop,offset=32256
):
$ fdisk -l sdcard.img
You must set cylinders.
You can do this from the extra functions menu.
Disk sdcard.img: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
$ sudo mount -o loop sdcard.img /mnt/
的其他图像文件,其被描述为其实就是yaffs2文件。据我所知,它们不能直接安装,但可以使用两个工具unyaffs或unyaffs2进行提取。
$ mkdir extract
$ cd extract
$ unyaffs ../userdata.img
或
$ unyaffs2 --yaffs-ecclayout ../userdata.img .
注意,还有另一个叫simg2img
工具,它可以在Android源代码树./android_src/system/extras/ext4_utils/
这是对压缩的ext4 img文件可以用下找到。但是,如果错误地应用于yaffs2
图像,它会投诉Bad magic
。