web-dev-qa-db-ja.com

Raw形式でのディスクイメージのマウント

次のコマンドを使用して、Raw(dd)形式でディスクイメージをマウントしようとしているとき

mount  nps-2010-emails.dd /media/manu/

次のエラーメッセージが表示されます

mount: you must specify the filesystem type

-tを使用すると、ファイルシステムを指定できますが、マウントコマンドに引数として渡すことができるRAW(dd)ファイルの用語は何ですか。このファイルシステムをマウントする私の方法が間違っている場合、同じことをするのを手伝ってください。

$ file -s nps-2010-emails.dd
nps-2010-emails.dd: x86 boot sector; 
partition 1: ID=0xb, starthead 254, startsector 1, 20479 sectors, extended partition table (last)\011, code offset 0x0

$ fdisk -l nps-2010-emails.dd
Disk nps-2010-emails.dd: 10 MB, 10485760 bytes
255 heads, 63 sectors/track, 1 cylinders, total 20480 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

             Device Boot      Start         End      Blocks   Id  System
nps-2010-emails.dd1               1       20479       10239+   b  W95 FAT32 
11
spaceman_spiff

http://major.io/2010/12/14/mounting-a-raw-partition-file-made-with-dd-or-dd_rescue-in-linux/ から、提案がありますオフセットを使用します。最初にfdisk(8)でオフセットを取得してから、offsetmountオプションでオフセットを指定します。 fdiskを使用して、パーティションの開始セクターとセクターサイズを決定します。次に、開始セクター番号とバイト単位のセクターサイズを使用して、バイト単位でオフセットを計算します。例については、 ディスク全体(デバイス)のイメージから単一パーティションをマウントする を参照してください。最後に:

mount -o offset=<offset in bytes> nps-2010-emails.dd /media/manu/

典型的なハードディスクでは、データを保持するセルはグループ化されています。グループ化はセクターと呼ばれます。通常の分割方法では、最初のいくつかのセクターは、パーティションに関する情報を提供するために確保されており、ギャップがあります。したがって、ディスク全体のイメージがある場合、これらのセクターも含まれます。現在、パーティションは最初のバイトから開始しないため、mountコマンドは最初のバイトから直接開始できません。したがって、mountをスキップするバイト数を指定して(余分な情報を回避できるように)、実際のパーティションに到達する必要があります。これはオフセットと呼ばれます。これで、各セクターは特定の量の情報をバイト単位で保存できるようになり、これをセクターのサイズと呼びます。セクターのサイズにセクター数のギャップのサイズを掛けることで、このギャップに格納できる情報の合計サイズを取得します。

fdiskの出力から、セクターサイズが512バイトであり、セクター1から始まることがわかります。したがって、オフセットは1 * 512 = 512です。次のコマンドを試してください。

mount -t vfat -o offset=512 ps-2010-emails.dd /media/manu/

fdiskがFAT32として指定したため、ファイルシステムタイプを追加しました。書き込み用にもマウントするには、代わりに-o offset=512,rwを使用します。

16
muru

here のように、コンピューターにダンプ内のすべてのパーティションを自動的にスキャンさせ、すべてのループデバイスを自動的に準備させることもできます。

したがって、/dev/sda全体をsda.imgと呼ばれるものにダンプしたとしましょう。次のようにパーティションにアクセスできます。

losetup -f -P sda.img

私のシステムでは、次のように表示されます。

sda raw image

非GUI環境では、作成したデバイスをlosetup -lでリストできます。これにより、ループデバイスの名前がわかります。例:

# losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /path/mmcblk0

次に、最初のパーティションを次のようにマウントできます。

mount /dev/loop0p1 /mnt/mypartition

お役に立てば幸いです。

10

評判がないためコメントを追加することはできませんが、GPTディスクを持っている人にfdiskでテストする場合、代わりにgdsikを使用して開始セクターを取得し、適切なオフセットをカウントします。助けてくれました。

fdisk -lから:

      Device Boot      Start         End      Blocks   Id  System
vm2080737.bak1   *           1        3901    31457279+  ee  GPT

そして、エラー「マウント:ファイルシステムタイプを指定する必要があります」で512オフセットでマウントできませんでした

gdisk -lは私に良い結果を与えました:

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34             545   256.0 KiB   A501  gpboot
   2             546          993825   485.0 MiB   A502  swap
   3          993826        62914526   29.5 GiB    A503  rootfs
1
Drey