ドライブ全体のイメージからパーティションをマウントできますか? [コピー]

ドライブ全体のイメージからパーティションをマウントできますか? [コピー]

注:この質問は基本的に上記の質問と重複していることに同意しますが、@alienthの答え(下)がより簡潔であると思うので、他の質問について議論する前に最初に検討することをお勧めします。

私はUbuntuシステムドライブ全体を定期的に別のドライブにバックアップ/イメージ/コピーします。

dd if=/dev/sda of=/media/disk1/backup.iso

実験後、ドライブの故障などに遭遇した後にドライブを復元する必要がある場合に非常に便利です。

しかし、今、その.iso(ドライブを追加するときに/ dev / sda1)からパーティションをマウントしたいと思います。バックアップする場合:

dd if=/dev/sda1 of=/media/disk1/backup.iso

その後、Ubuntuのマウントボリュームユーティリティを使用して.isoを簡単にマウントできます。ただし、このユーティリティはドライブ全体のISOでは機能しません。元のisoからsda1をマウントする方法はありますか?

答え1

ディスクイメージ内のパーティションの開始場所を決定する必要があります。これを行うには、次のコマンドを実行します。

sudo parted /media/disk1/backup.iso unit s print

出力は次のとおりです。

Model:  (file)
Disk /tmp/file: 200000s
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start  End      Size     Type     File system  Flags
 1      2048s  199999s  197952s  primary

Start論理セクタサイズにマウントするパーティションサイズを掛ける必要があります。この場合、最初のパーティションをマウントする場所は、またはに2048 * 512なります1048576

その後、上記で決定した値をパラメータに挿入して、ループバック設定を使用してパーティションをマウントできますoffset

mount -o loop,offset=1048576 /media/disk1/backup.iso /mnt/mydisk

答え2

ディスクイメージ全体からパーティションテーブルを表示する方法があります。事実は2つです。

最初の方法:

# losetup /dev/loop0 /media/disk1/backup.iso
# fdisk /dev/loop0 # Be very careful with this!
Command: w

理想的には、パーティションなどの/dev/loop0p1ループデバイスを作成する必要があります。その後、通常はループデバイスとしてマウントできます。バックアップが破損しないように、読み取り専用に設定することをお勧めします。パーティション読み取りを直接使用するよりも安全な方法があるかもしれません。しかし、これらの安定性の問題が発生しましたが、これが私が見つけた最高の方法です。/dev/loop0p2backup.isofdiskpartprobekpartxfdisk

2番目の方法はより難しいです。これには、パーティションの開始位置(fdisk -l /dev/loop0)を手動で読み取り、ループデバイスがパーティションの開始位置から開始するようにlosetup適切なオプションを使用して再実行することが含まれます。--offset渡す正確な数値は出力によって異なりますが、fdisk開始ブロックにブロックサイズを掛けたものと同じバイト単位のオフセットです。この時点で/dev/loop0直接マウントすることができます(つまり、読み取り専用は慎重です)。

関連情報