Comment redimensionner des partitions dans une image de disque dur complète?

8

J'ai pris une image complète d'un disque dur en utilisant:

dd if=/dev/sda of=/home/user/harddriveimg bs=4M

Il me semble que je devrais être en mesure de redimensionner les partitions en son sein après l'avoir correctement monté.

Comme je ne suis pas familier avec la ligne de commande séparée, j'ai essayé:

gparted /home/user/harddriveimg

Pendant que ceci chargeait la table de partition, il ne pouvait pas trouver les partitions elles-mêmes, par exemple harddriveimg0.

Est-il possible de modifier un fichier image comme celui-ci, sans le réécrire sur un disque, et si oui, comment? Je serais parfaitement satisfait d'une solution qui utilise uniquement des commandes de terminal.

Time Square
la source
1
Si vous souhaitez accéder à des partitions individuelles à partir de votre fichier d'image disque en tant que périphériques blocs (afin, par exemple, de les monter), examinez kpartx .
Celada
@Celada, cela ressemble à une bonne solution! Kpartx est-il juste un wrapper pour partx?
Timesquare
Je crois que cela partxne fonctionne qu'avec de vrais disques, car il utilise la magie de détection de partition basée sur le noyau alors qu'il kpartxutilise Device-mapper, un mécanisme générique et plus puissant pour créer des périphériques de bloc dans le noyau.
Celada
@Celada, kpartxn'utilise pas le noyau pour la détection de table de partition, mais il en informe le noyau, il nécessite donc un périphérique partitionnable, tel qu'un périphérique de boucle.
psusi

Réponses:

3

Vous devez associer un périphérique de bouclage au fichier:

sudo losetup /dev/loop0 /home/user/harddriveimg

Exécutez ensuite gparted sur cela.

psusi
la source
Cela, malheureusement, ne fonctionne pas. Gparted recherche toujours / dev / loop0p1 pour la première partition répertoriée dans la table de partition et ainsi de suite.
Timesquare
@Timesquare, il semble que votre libparted soit cassé. Quelle version utilisez-vous et quelle distribution?
psusi
Ma version libparted est 2.0.0 sur Archlinux. Je crois que le problème réside dans la méthode de Gparted pour choisir le périphérique de bloc associé à un enregistrement de partition donné. (Gparted est la version 0.14.1)
Timesquare
@Timesquare, non, c'est le périphérique de bloc correct pour la partition. Vous avez besoin de parted 3.0 ou version ultérieure.
psusi
Si je comprends bien ce que vous dites, le problème est ailleurs. Après avoir utilisé losetup comme vous l'avez suggéré, les périphériques de bloc / dev / loop0p1, / ​​dev / loop0p2 ... n'existent pas.
Timesquare