myimage.disk
パーティションテーブルとプライマリパーティション(FAT32ファイルシステム)を含むディスクイメージがあります。これはUSBペンイメージと考えてください。
プライマリパーティションをローカルディレクトリにマウントしたい。ループユーティリティを使用してパーティションイメージをマウントする方法は知っていますが、ここにはディスクイメージがあります。私の推測では、パーティションテーブルを「スキップ」するイメージをマウントする必要がありますが、どうすればそれができますか?
myimage.disk
パーティションテーブルとプライマリパーティション(FAT32ファイルシステム)を含むディスクイメージがあります。これはUSBペンイメージと考えてください。
プライマリパーティションをローカルディレクトリにマウントしたい。ループユーティリティを使用してパーティションイメージをマウントする方法は知っていますが、ここにはディスクイメージがあります。私の推測では、パーティションテーブルを「スキップ」するイメージをマウントする必要がありますが、どうすればそれができますか?
回答:
kpartxツールはこれを簡単にします。イメージのパーティションごとにループデバイスを/ dev / mapperに作成します。次に、手動でオフセットを計算しなくても、目的のパーティションに対応するループデバイスをマウントできます。
たとえば、ディスクイメージの最初のパーティションをマウントするには:
kpartx -a -v myimage.disk
mount /dev/mapper/loop0p1 /mnt/myimage
画像の処理が完了したら、ループデバイスを削除します。
umount /mnt/myimage
kpartx -d -v myimage.disk
あるいは、最新のカーネルがあり、起動時にloop.max_part = 63を渡す(ループがビルトインの場合)またはmodprobe(ループがモジュールの場合)に渡す場合、次のように実行できます。
losetup /dev/loop0 myimage.disk
partprobe /dev/loop0 # Re-read partition table if /dev/loop0 was used with a different image before
mount /dev/loop0p1 /mnt/myimage
ループが完了したら:
losetup -d /dev/loop0
-o loop
上記は不要で、/dev/mapper/loop0p1
すでにブロックデバイスです(ループデバイスの上にあるマッパーデバイスです。ループデバイスの上に別のループデバイスのレイヤーは必要ありません)。
/dev/loop0p1
後にパーティションデバイス(など)を取得しない場合はlosetup
、を実行しpartprobe /dev/loop0
ます。
kpartx
Linux Mint 18にはデフォルトでインストールされているようです。
これを見つけました:
http://www.andremiller.net/content/mounting-hard-disk-image-include-partitions-using-linux
まさに私が探していたもののようです。
重要な部分は次のとおりです。
mount -o loop,ro,offset=32256 hda.img /mnt/rabbit
ここで、オフセットの値はバイト単位です。オフセットを取得するための推奨される方法parted
は、画像をポイントし、バイト単位でユニットBを指定し、印刷出力から開始値を取得することです。別の方法として、ディスク領域があると仮定して、明らかなことを行いdd
ます。オフセットとサイズを取得したら、各パーティションを個別のファイルに抽出するために使用します。
mount -o loop,ro,offset=32256 hda.img /mnt/rabbit
です。の値offset
はバイト単位です。オフセットを取得するための推奨される方法は、画像を別の場所にunit
B
向けてstart
から、バイト単位でprint
出力から値を取得することです。別の方法として、ディスク領域があると仮定して、明らかなことを行いdd
ます。オフセットとサイズを取得したら、各パーティションを個別のファイルに抽出するために使用します。
mount
を含む行offset
です。
local_image_file=/var/tmp/image.img
first_byte=$(parted -m ${local_image_file} unit B print | grep Linux | cut --fields 2 --delimiter ':' | sed 's/.$//')
loop_file=/var/tmp/loop
mkdir -p ${loop_file}
mount -o loop,ro,offset=${first_byte} ${local_image_file} ${loop_file}
現在、を使用して作業を最小限に抑えることができますudisks
。ArchWikiのソリューション:udisks-ループデバイスのマウント
ISOイメージを簡単にマウントするには、次のコマンドを使用します。
udisksctl loop-setup -r -f image.iso
これにより、ループデバイスが作成され、マウント可能なISOイメージが表示されます。アンマウントされると、ループデバイスはudevによって終了されます。
-r
読み取り専用オプションがあります。
udisksctl
です。
losetup --partscan --find --show disk.img
が続くmount /dev/loop0p1 /mnt/disk