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

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

我有一个图像文件: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

我收到的错误是:

mount: wrong fs type, bad option, bad superblock on /dev/loop0

这是因为我正在尝试安装为不同架构创建的图像吗?

唯一接近工作的命令是挂载为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

因此它似乎已挂载,但实际上并未挂载,然后我收到错误。当使用除此以外的文件系统时,iso9660我只收到警告。

我可以通过哪些方式来提取该图像的内容?

答案1

这是因为我正在尝试安装为不同架构创建的图像吗?

不,这是因为您尝试安装的映像看起来首先不像任何可安装的文件系统。它是整个磁盘图像– 它以 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

如果您的系统太旧,也可以通过kpartx工具。

相关内容