我有一个硬盘转储文件。一家硬盘恢复公司帮我转储的。我不知道他们用什么软件转储的,我只有一个文件disk.img
。
我唯一的想法是使用file
:
$ file disk.img
12693A.img: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3, stage2 address 0x2000, stage2 segment 0x200; partition 1: ID=0xc, starthead 1, startsector 63, 312576642 sectors, code offset 0x48
我猜,如果这是硬盘的转储,它按以下顺序包含 a) 引导扇区 b) 分区表 c) 分区。所以我猜该file
工具只读取(任何)文件的第一部分,在本例中,第一部分是引导扇区,尽管文件包含的内容远不止这些。
我如何能:
1) 查看分区表。不是十六进制代码,而是一些人类可读的关于分区的信息。
2) 我如何查看每个分区的内容?我猜这被称为“安装”,尽管它不是物理磁盘,尽管我对更改任何文件不感兴趣,只是想查看内容。
答案1
由于它是一个包含整个磁盘副本的文件,因此您可以像对待其他块设备一样简单地对待它并fdisk
在其上运行。鉴于磁盘映像名为disk.img
,以下命令就足够了:
fdisk -l disk.img
这将产生类似以下内容的输出:
Disk /home/yjwong/disk.img: 250.1 GB, 250058268160 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488395055 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/home/yjwong/disk.img1 2048 3905535 1951744 82 Linux swap / Solaris
/home/yjwong/disk.img2 * 3905536 488394751 242244608 83 Linux
要挂载分区,Linux 内核允许您在 mount 命令中指定磁盘映像的偏移量(以字节为单位)。您需要在磁盘映像内循环挂载分区。但是,由于fdisk
指定了扇区的起始偏移量,您需要将给定的偏移量乘以扇区大小(通常为 512)。
要挂载上面示例中的第二个分区,偏移量为3905536 * 512 = 1999634432
。
ext4
假设分区类型为,并且/mnt
是预期的挂载点,以下命令将发挥作用:
sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432
如果想要以只读的方式查看内容,可以添加ro
到挂载选项中:
sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432,ro
答案2
图片是 mime 中已知的文件类型。
mimeopen <file>.img
会向您提供明智的选择。如果要将映像刷入 SD 卡以从其启动 Ubuntu,并且该映像已安装在
/media/$USER
显然他开始应用程序/x-raw-磁盘映像
系统很可能会调整这些命令,所以我希望这种技术也能很好地发挥作用。