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ます。
kpartxLinux 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