有没有办法在不挂载 .img 文件的情况下浏览它?我有一个从 clonezilla 分区快照生成的 .img 文件。不知为何,我无法使用命令挂载该文件mount -o loop sda5.img /mnt/
。
dmesg | tail
显示以下错误:
[1325.395286] EXT4-fs(loop0):几何形状不良:块数 11221248 超出设备大小(11218432 个块)
有人知道如何在不安装的情况下进行浏览或者什么可能导致此错误吗?
答案1
如果这是整个硬盘的映像,或者像您的情况下一样,这可能是扩展分区的映像,则您将需要知道分区布局和文件中每个分区的偏移量才能安装它们。
为此,您将需要该parted
工具,您可以使用以下命令安装它:
apt-get install parted
安装后parted
,使用你的镜像文件路径启动它。parted
将显示一个提示:
$ parted /path/to/image/file/sda5.img
GNU Parted 2.3
.....
(parted)
在此提示符下(以 为前缀(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
输出中的表格将告诉您文件中每个分区的偏移量以及每个分区中的文件系统类型。例如,要挂载上面示例输出中的第一个分区,您需要输入以下命令:
sudo mount -o loop,ro,offset=1048576 /path/to/image/file/sda5.img /mnt/partition
首先确保它/mnt/partition
存在。
答案2
我在使用从 Clonezilla 快照生成的 ext4 映像时也遇到了同样的问题。
对我来说,真正有效的方法是使用 truncate 将文件扩展到分区表报告的大小。 dmesg 报告的错误在我的案例中是:
[15687.653868] EXT4-fs (loop0): bad geometry: block count 18482176 exceeds size
of device (18352672 blocks)
因此我使用以下命令调整了文件的长度:
truncate -o -s 18482176 /path/to/partition.img
(^ 注意,这是日志中两个数字中第一个且较大的一个)
之后,安装就顺利了,我就可以访问我的数据了。