私はイメージドライブで多くの作業をしています。つまり、問題のドライブのddコピーを実行してから、ドライブ自体ではなくイメージで作業します。
ほとんどの作業では、kpartxを使用してドライブのパーティションを/ dev/mapper /の下のデバイスにマップします。ここで私が疑問に思うのは、どのマッピングがどの画像に属するかを見つける方法があるかどうかです。
このことを考慮:
root@vyvyan:/tmp# kpartx -a -v Image1
add map loop1p1 (254:4): 0 10240 linear /dev/loop1 2048
add map loop1p2 (254:5): 0 10240 linear /dev/loop1 12288
add map loop1p3 (254:6): 0 52848 linear /dev/loop1 22528
root@vyvyan:/tmp# kpartx -a -v Image2
add map loop2p1 (254:7): 0 33508 linear /dev/loop2 2048
add map loop2p2 (254:8): 0 39820 linear /dev/loop2 35556
ここで、どの画像がどのマッピングに割り当てられたかを忘れたとしましょう。 kpartx(またはカーネルなど)に、どのイメージがどこに移動するかを通知する方法はありますか?
[〜#〜] edit [〜#〜]また、kpartxがマッピングを追加しているときに誤ってイメージファイルをrmした場合、どのようにマッピングを削除しますか? kpartxは、実際のイメージが存在することを望んでいます。
losetup
(通常、それらを設定するために使用されるコマンド)は次のように伝えます。
$ /sbin/losetup --list
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /var/tmp/jigdo/debian-7.6.0-AMD64-CD-1.iso
古いバージョンでは、-a
の代わりに--list
を使用した方がよい場合があることに注意してください。これにより、出力が異なる非推奨の形式で出力されます。
情報は/sys
から取得されます。
$ cat /sys/class/block/loop0/loop/backing_file
/var/tmp/jigdo/debian-7.6.0-AMD64-CD-1.iso
別の、おそらくよりポータブルなオプションは、udiskから取得することです。
$ udisksctl info -b /dev/loop0
/org/freedesktop/UDisks2/block_devices/loop0:
⋮
org.freedesktop.UDisks2.Loop:
Autoclear: false
BackingFile: /var/tmp/jigdo/debian-7.6.0-AMD64-CD-1.iso
SetupByUID: 1000
⋮
losetup
も-d
オプションを使用して、それらを削除します。これには、パラメータとしてループデバイスが必要です。それはバッキングファイル/デバイスを気にしません。
以下も追加します。デバイスがkpartxでマップされている場所を調べることができます。例えば:
%> Sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072
これは、ファイルのマッピング先を忘れたときに役立ちます。もちろん、loop0p1とloop0p2はディレクトリ/ dev/mapperの下にマップされます。