eu tenho um dd
Arquivo de imagem de disco comigo.
Eu posso usar uma ferramenta como kpartx
para criar um dispositivo mapeador de dispositivo a partir desse arquivo de imagem de disco.
Mas particionando programas como gparted
e fdisk
não liste o meu dispositivo mapeado!
Existe alguma maneira de fazer gparted
(ou um programa equivalente - gráfico ou console) lista meu dispositivo mapeado e suas partições constituintes e informações detalhadas sobre essas partições?
PS: Este é um caso de falta de recursos dessas ferramentas, ou será que fornecer esse recurso não é fundamentalmente possível?
fonte
losetup
Então, as ferramentas de particionamento não deveriam se importar com isso?sda
ouloop0
representa todo o disco (ou imagem), entãosda1
ouloop0p1
representam a primeira partição,sda2
ouloop0p2
representam a segunda partição e assim por diante. Ler um desses dispositivos de "partição" só lhe dará o conteúdo da partição.sda
ouloop0
. ⫽ No entanto, para redimensionamento um sistema de arquivos, as ferramentas externas que o GParted usa (por ex.resize2fs
ountfsresize
) Faz precisa ser dado um dispositivo de "partição" (sda2
ouloop0p2
).Basta criar hardlink temporário depois de correr
kpartx -a ...
:E então execute o gparted como de costume (ele funcionará corretamente
/dev/mapper/loop0p*
):Não se esqueça de remover o link quando não for mais necessário.
fonte
partprobe
ou algo similar para atualizar arquivos especiais associados a partições. Isso não atualiza seu/dev/mapper/*
arquivos, eles ainda apontam para as mesmas partes da imagem inteira! Se uma ferramenta precisar desses arquivos (gparted
então é sábio aplicar as operações uma de cada vez, destruindo e reconstruindo arquivos criados porkpartx
depois de cada operação, para que a próxima veja dados coerentes.Depois de 3,5 anos eu tenho outra solução nisso :)
Se você não está preocupado em usar o kpartx e estou correto sugerindo que seu alvo é operar partições em uma imagem de disco representada como um arquivo comum, aqui está um fluxo de trabalho alternativo sem kpartx e symlinking (é por isso que é postado como uma resposta separada):
sudo losetup --find --show ./somedrive.img
Anexar um dispositivo de loop para o arquivo inteiro
./somedrive.img
;--find
é perguntarlosetup
para procurar o dispositivo livre automaticamente; e--show
é imprimir o dispositivo que foi usado. Por exemplo, considere que o dispositivo escolhido é/dev/loop5
.sudo partx --update /dev/loop5
Diga ao kernel Linux para reexaminar partições dentro
/dev/loop5
. Em caso de sucesso, não produzirá nenhuma saída, então confirals -al /dev/loop5
para ver o que aparece.Faça o que você precisar, como
sudo gparted /dev/loop5
Neste ponto, você deve ser capaz de operar corretamente
/dev/loop5p*
.sudo partx --delete /dev/loop5
Libere os mapeamentos de partições.
sudo losetup --detach /dev/loop5
Finalmente, solte o dispositivo de loop.
P.S. Se você é o orgulhoso proprietário de
util-linux
pacote com a versão v2.21 ou superior, você pode solicitar o anexo de dispositivo de loop e uma nova verificação de partição em um único disparo:sudo losetup --find --show --partscan ./somedrive.img
e não deve encontrar o problema com os utilitários do tipo gparted.fonte