使用未知文件系统提取 .img 的内容

Jam*_*ery 3 linux debian mount filesystems images

我有一个图像文件:kali-linux-1.0.9a-armhf.img. 这是 的图像Kali Linux ARMH build

我试图提取图像的内容,但无济于事。我尝试挂载映像,但一直收到文件系统类型错误的错误消息。

我试过:

sudo mount -o loop -t iso9660 kali-linux-1.0.9a-armhf.img /mnt/kali
sudo mount -o loop -t ext3 kali-linux-1.0.9a-armhf.img /mnt/kali
sudo mount -o loop -t ext4 kali-linux-1.0.9a-armhf.img /mnt/kali
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

mount: wrong fs type, bad option, bad superblock on /dev/loop0
Run Code Online (Sandbox Code Playgroud)

这是因为我试图挂载为不同架构创建的映像吗?

唯一接近工作的命令是安装为iso9660. 该命令输出:

mount: block device /mnt/hgfs/Downloads/kali-linux-1.0.9a-armhf/kali-linux-1.0.9a-armhf.img is write protected, mounting read only
mount: wrong fs type, bad option, bad superblock on /dev/loop0
Run Code Online (Sandbox Code Playgroud)

所以它似乎挂载了,但它没有挂载,然后我收到一个错误。当使用除iso9660我以外的文件系统时,只会收到警告。

提取此图像的内容有哪些选项?

use*_*686 5

这是因为我试图挂载为不同架构创建的映像吗?

不,这是因为您首先尝试挂载一个看起来不像任何可挂载文件系统的映像。它是一个完整的磁盘映像——它以一个 MBR 分区表开始,然后才有一些包含文件系统的分区,每个分区都将单独安装。(尽管这个特定的图像只有一个分区。)

要访问其内容,您需要为每个分区设置一个循环设备,而不仅仅是为整个文件。

如果您有一个相对较新的内核和 util-linux,请使用losetup --partscan

# losetup -f -P kali-linux-1.0.9a-armhf.img

# losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /tmp/kali-linux-1.0.9a-armhf.img

# lsblk -f
NAME        FSTYPE      LABEL       UUID                                 MOUNTPOINT
loop0
??loop0p1   ext4        DEBIAN_LIVE 5ac96015-c0e0-45dc-8642-a53d9e9826c8

# mount /dev/loop0p1 /mnt
Run Code Online (Sandbox Code Playgroud)

如果您的系统太旧,该kpartx工具会提供类似的功能。