Bagaimana menemukan gambar mana yang milik / dev / loop?


9

Saya banyak bekerja dengan drive yang dicitrakan, artinya melakukan dd-copy drive yang dimaksud dan kemudian bekerja pada gambar, bukan drive itu sendiri.

Untuk sebagian besar pekerjaan, saya menggunakan kpartx untuk memetakan partisi drive ke perangkat di bawah / dev / mapper /. Yang saya ingin tahu di sini adalah apakah ada cara untuk menemukan pemetaan mana yang milik gambar mana.

Pertimbangkan ini:

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

Sekarang, katakanlah saya lupa gambar yang pergi ke pemetaan yang mana. Apakah ada cara untuk membiarkan kpartx - atau kernel, atau apa pun - memberi tahu saya gambar mana yang masuk?

Sunting Juga, jika saya tidak sengaja rm file gambar sementara kpartx telah menambahkan pemetaan, bagaimana Anda menghapus pemetaan? kpartx ingin gambar yang sebenarnya ada.

Jawaban:


13

losetup (perintah yang biasanya digunakan untuk mengaturnya) akan memberi tahu Anda:

$ /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

Perhatikan bahwa dengan versi lama Anda mungkin topi untuk penggunaan penggunaan -abukan --list, dan ini output dalam berbagai dan format yang sekarang usang.

Informasi tersebut berasal dari /sys:

$ cat /sys/class/block/loop0/loop/backing_file 
/var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

Pilihan lain, mungkin lebih portabel, adalah mendapatkannya dari udisks:

$ 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
⋮

losetupjuga akan dengan senang hati menghapusnya untuk Anda, menggunakan -dopsi. Itu hanya membutuhkan perangkat loop sebagai parameter; tidak peduli tentang file / perangkat pendukung.


losetup -d / dev / loop0: "loop: tidak dapat menghapus perangkat / dev / loop0: Perangkat atau sumber daya sibuk". Namun itu tidak dipasang atau digunakan dengan cara apa pun. Kenapa ini?
bos

@ apakah Anda memetakannya di bawah / dev / mapper? Itu mungkin dianggap sebagai digunakan. Bersihkan pemetaan perangkat-mapper. (jika kpartx tidak memiliki cara untuk melakukan itu, Anda dapat menggunakan dmsetup)
derobert

0

Saya juga akan menambahkan yang berikut ini. Anda dapat memeriksa di mana perangkat dipetakan dengan kpartx. Sebagai contoh:

%> sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072

Ini membantu ketika Anda lupa di mana file dipetakan. Tentu saja loop0p1 dan loop0p2 dipetakan di bawah direktori / dev / mapper.


Alangkah baiknya jika kpartx secara eksplisit mendaftar direktori tempat perangkat loop itu dipetakan.
Xofo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.