如何检查磁盘映像

Mad*_*ern 10 linux data-recovery

我有一个硬盘的转储。一家硬盘恢复公司为我制作了它。我不知道他们用什么软件进行转储,我只有一个文件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
Run Code Online (Sandbox Code Playgroud)

我猜,如果这是一个硬盘的转储,它包含,按以下顺序 a) 引导扇区 b) 分区表 c) 分区。所以我猜这个file工具只是读取(任何)文件的第一部分,在这种情况下,第一部分是一个引导扇区,尽管文件包含更多。

我如何能:

1)查看分区表。不是十六进制代码,而是关于哪些分区在那里的人类可读的东西。

2) 如何查看每个分区的内容?我想这被称为“挂载”,即使它不是物理磁盘,即使我对更改任何文件不感兴趣,也只是查看内容。

yjw*_*ong 17

由于它是一个包含整个磁盘副本的文件,因此您可以像对待任何其他块设备一样简单地对待它并fdisk在其上运行。鉴于磁盘映像被称为disk.img,以下命令就足够了:

fdisk -l disk.img
Run Code Online (Sandbox Code Playgroud)

这将提供类似于以下内容的输出:

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
Run Code Online (Sandbox Code Playgroud)

要挂载分区,Linux 内核允许您在 mount 命令中指定磁盘映像的偏移量(以字节为单位)。您需要在磁盘映像中循环挂载分区。但是,由于fdisk指定了扇区的起始偏移量,您需要将给定的偏移量乘以扇区大小(通常为 512)。

要挂载上面示例中的第二个分区,偏移量为3905536 * 512 = 1999634432.

假设分区类型是ext4,并且/mnt是预期的挂载点,以下命令将起作用:

sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432
Run Code Online (Sandbox Code Playgroud)

如果要以只读方式查看内容,可以添加ro到挂载选项:

sudo mount -t ext4 /home/yjwong/disk.img /mnt -o loop,offset=1999634432,ro
Run Code Online (Sandbox Code Playgroud)