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