Alguma maneira de fazer com que as ferramentas de particionamento vejam os dispositivos criados pelo kpartx?

Alguma maneira de fazer com que as ferramentas de particionamento vejam os dispositivos criados pelo kpartx?

Eu tenho um ddarquivo de imagem de disco 'ed comigo.

Posso usar uma ferramenta como kpartxcriar um dispositivo mapeador de dispositivos a partir deste arquivo de imagem de disco.

Mas programas de particionamento gostam gpartede fdisknão listam meu dispositivo mapeado!

Existe alguma maneira de listar gparted(ou um programa equivalente - gráfico ou console) meu dispositivo mapeado e suas partições constituintes e informações detalhadas sobre essas partições?

PS: Este é um caso de falta de recurso nessas ferramentas ou é fundamentalmente impossível fornecer esse recurso?

Responder1

É possível, mas não tenho certeza se faz sentido.

As ferramentas de particionamento se preocupam apenas com o dispositivo de disco inteiro, porque leem a tabela de partição diretamente dos setores relevantes do disco. Eles não precisam existir dispositivos por partição. Isso significa que um dispositivo de loop básico feito com losetupé suficiente e, se uma ferramenta não o detectar, você poderá executá-lo manualmente fdisk /dev/loop0ou algo assim.

(Se umdisco inteirodevice está em /dev/mapper/, não é difícil fazer com que essas ferramentas o vejam, embora geralmente envolva a edição de algumas linhas do código-fonte... a execução fdisk /dev/mapper/blehgeralmente é mais fácil.)


Observe também que os kernels recentes suportam losetup --partscano que elimina a necessidade de usar o mapeador de dispositivos para isso.

Responder2

Basta criar um hardlink temporáriodepois de correr kpartx -a ...:

sudo ln /dev/loop0 /dev/mapper/loop0

E então execute o gparted normalmente (ele funcionará corretamente /dev/mapper/loop0p*):

sudo gparted /dev/mapper/loop0

Não se esqueça de remover o link quando não for mais necessário.

Responder3

Depois de 3,5 anos, tenho outra solução para isso :)

se você não está preocupado em usar o kpartx e estou certo ao sugerir que seu objetivo é operar partições em uma imagem de disco representada como um arquivo comum, aqui está um fluxo de trabalho alternativo sem kpartx e links simbólicos (é por isso que é postado como uma resposta separada):

  1. sudo losetup --find --show ./somedrive.img

    Anexe um dispositivo de loop para todo o arquivo ./somedrive.img; --findé pedir losetuppara procurar dispositivo gratuito automaticamente; e --showé para imprimir o dispositivo que foi usado. Por exemplo, considere que o dispositivo escolhido é /dev/loop5.

  2. sudo partx --update /dev/loop5

    Diga ao kernel do Linux para verificar novamente as partições internas do arquivo /dev/loop5. Em caso de sucesso não produzirá nenhum resultado, então verifique ls -al /dev/loop5*o que aparece.

  3. Faça o que precisar, comosudo gparted /dev/loop5

    Neste ponto você deverá ser capaz de operar corretamente /dev/loop5p*.

  4. sudo partx --delete /dev/loop5

    Libere os mapeamentos de partição.

  5. sudo losetup --detach /dev/loop5

    Finalmente, solte o dispositivo de loop.

PSSe você é o Proud Owner™ do util-linuxpacote com versão v2.21 ou superior, você pode solicitar o anexo do dispositivo de loop e uma nova varredura da partição de uma só vez: sudo losetup --find --show --partscan ./somedrive.imge não deve enfrentar o problema com utilitários do tipo gparted.

informação relacionada