故障したドライブのイメージを次のように作成しました。
dd if=/dev/sde of=/mnt/image001.dd
ドライブには2つのパーティションしかありませんでした。
Device Boot Start End Blocks Id System
/dev/sde1 * 1 13 102400 7 HPFS/NTFS
/dev/sde2 13 60802 488282112 7 HPFS/NTFS
イメージ(image001.dd)を2つまたは3つのファイルに分割するにはどうすればよいですか(1:MBR; 2:パーティション1; 3:パーティション2)ファイルシステムをマウントできるようにそれ?
私がうまくいかないことがわかった解決策は、split
を使用して多数の512Kファイルを作成し、次にそれらをcat
して3つのファイル(1:512K、2:105M、 3:残り)、しかし私はそのためのディスクスペースを持っていません。
歴史:
イメージ全体を新しいドライブにコピーしましたが、起動してほとんど機能します。 FSは古い故障したドライブで破損しており、dd
は破損した部分を(必要に応じて)コピーしたようです。それらを新しいドライブに書き込みました。私の解決策コピーしたFS)をマウントし、ファイルだけをコピーして(rsync
などを使用)、うまくいけば悪いビットはコピーしません。
UPDATE 1:dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1
を試しましたが、mount
がNTFS signature is missing
と文句を言っているので、やっていないと思います正しくやってはいけません。
これを分割する必要はまったくありません。
parted
を使用して、パーティションテーブルの詳細を取得します。
parted image001.dd
parted
で、コマンドu
、次にB
を使用してバイト単位に切り替えます。その後、コマンドprint
を発行します。
次のような出力が得られます(出力は実際のシステムからのものであり、画像ではありません)。
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
2 1048576B 400556031B 399507456B primary ext4 boot
3 400556032B 21165506559B 20764950528B primary ext4
1 21165506560B 25164775423B 3999268864B primary linux-swap(v1)
ループバックマウントのオフセットとしてStart
番号を使用できます。
mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue
3番目のパーティションを/mnt/rescue
にマウントします。
単にkpartx
ツールを使用する方がはるかに優れています。
usage : kpartx [-a|-d|-l] [-v] wholedisk
-a add partition devmappings
-d del partition devmappings
-l list partitions devmappings that would be added by -a
...
例:
# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
この時点でマウントできます/dev/mapper/loop0p2
。
マウントを解除した後、kpartx -d whole_disk
そうじする。