Como encontrar quais imagens pertencem a qual / dev / loop?

7

Eu trabalho muito com drives gravados, ou seja, faço uma cópia dd da unidade em questão e, em seguida, trabalho na imagem em vez da própria unidade.

Para a maioria dos trabalhos, eu uso o kpartx para mapear as partições da unidade para um dispositivo em / dev / mapper /. O que eu estou querendo saber aqui é se há uma maneira de descobrir quais dos mapeamentos pertencem a qual imagem.

Considere isso:

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

Agora, digamos que esqueci qual imagem foi para qual mapeamento. Existe uma maneira de deixar o kpartx - ou o kernel, ou qualquer outra coisa - me dizer qual imagem vai para onde?

EDIT Além disso, se eu acidentalmente rm o arquivo de imagem enquanto kpartx adicionou os mapeamentos, como você remove os mapeamentos? O kpartx quer que a imagem real esteja presente.

    
por bos 09.12.2014 / 21:14

2 respostas

9

losetup (o comando normalmente usado para configurá-los) informará:

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

Note que com versões mais antigas você pode usar o uso de -a em vez de --list , e isso resulta em um formato diferente e agora obsoleto.

A informação vem de /sys :

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

Outra opção, possivelmente mais portátil, é obtê-lo a partir dos 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 também os removerá com prazer, usando a opção -d . Isso requer apenas o dispositivo de loop como um parâmetro; não se importa com o arquivo / dispositivo de apoio.

    
por 09.12.2014 / 21:25
0

Eu também adicionaria o seguinte. Você pode sondar onde os dispositivos são mapeados com o kpartx. Por exemplo:

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

Isso é útil quando você esquece onde os arquivos são mapeados. Claro que o loop0p1 e o loop0p2 são mapeados sob o diretório / dev / mapper.

    
por 12.07.2016 / 23:47