无需安装即可浏览 .img

Aha*_*ius 13 mount disk-image

无论如何浏览 .img 文件而不安装它?我有一个从 clonezilla 分区快照生成的 .img 文件。我以某种方式在使用命令挂载文件时遇到问题mount -o loop sda5.img /mnt/

dmesg | tail 向我显示以下错误:

[1325.395286]EXT4-fs(loop0):坏几何:块数11221248超过设备大小(11218432块)

任何人都知道如何在不安装的情况下浏览或可能导致此错误的原因是什么?

ben*_*der 19

如果这是整个硬盘驱动器的映像,或者在您的情况下这可能是扩展分区的映像,则您需要知道分区布局和文件中每个分区的偏移量才能安装它们。

为此,您将需要该parted工具,您可以使用以下命令安装它:

apt-get install parted
Run Code Online (Sandbox Code Playgroud)

安装后parted,使用您的图像文件的路径启动它。甲parted提示将显示:

$ parted /path/to/image/file/sda5.img
GNU Parted 2.3
.....
(parted)
Run Code Online (Sandbox Code Playgroud)

在此提示中(以 为前缀(parted))键入以下命令:

(parted) unit B
(parted) print
.....
Number  Start          End            Size           Type     File system  Flags
 1      1048576B       1573912575B    1572864000B    primary  ntfs         boot
 2      1573912576B    156774694911B  155200782336B  primary  ntfs
 3      156774694912B  171454758911B  14680064000B   primary  ntfs
 4      171454758912B  180044693503B  8589934592B    primary

(parted) q
Run Code Online (Sandbox Code Playgroud)

输出中的表格将告诉您文件中每个分区的偏移量以及每个分区中的文件系统类型。例如,要挂载上面示例性输出中的第一个分区,您需要输入以下命令:

sudo mount -o loop,ro,offset=1048576 /path/to/image/file/sda5.img /mnt/partition
Run Code Online (Sandbox Code Playgroud)

首先确保它/mnt/partition存在。


小智 8

从 Clonezilla 快照生成的 ext4 图像也遇到了同样的问题。

实际上对我有用的是使用截断将文件扩展到分区表报告的大小。在我的案例中报告的错误 dmesg 是:

[15687.653868] EXT4-fs (loop0): bad geometry: block count 18482176 exceeds size
  of device (18352672 blocks)
Run Code Online (Sandbox Code Playgroud)

所以我调整了文件的长度:

truncate -o -s 18482176 /path/to/partition.img
Run Code Online (Sandbox Code Playgroud)

(^ 请注意,这是日志中两个数字中的第一个,也是较大的一个)

在那之后很高兴,我可以访问我的数据。