ハードディスクのダンプがあります。ハードディスクリカバリ会社が私のために作ってくれました。彼らがダンプを作成するためにどのソフトウェアを使用したかはわかりません。私が持っているのはファイルだけです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)パーティションテーブルを参照してください。 16進コードではなく、そこにどのパーティションがあるかについて人間が読めるもの。
2)各パーティションの内容を確認するにはどうすればよいですか?これは、物理ディスクではなく、ファイルを変更することに興味がなく、コンテンツを見るだけであるにもかかわらず、「マウント」と呼ばれていると思います。
ディスク全体のコピーを含むファイルであるため、他のブロックデバイスと同じように扱い、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)を掛ける必要があります。
上記の例の2番目のパーティションをマウントするには、オフセットは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