¿Cómo cambiar el tamaño de las particiones en una imagen completa del disco duro?

8

He tomado una imagen completa de un disco duro usando:

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

Me parece que debería poder cambiar el tamaño de las particiones dentro de él después de montarlo adecuadamente.

Como no estoy tan familiarizado con la línea de comando separada, probé:

gparted /home/user/harddriveimg

Si bien esto cargó la tabla de particiones, no pudo encontrar las particiones por sí mismas, por ejemplo, harddriveimg0.

¿Es posible modificar un archivo de imagen como este, sin volver a escribirlo en algún disco, y si es así, cómo? Estaría perfectamente satisfecho con una solución que usa solo comandos de terminal.

Timesquare
fuente
1
Si desea acceder a particiones individuales desde su archivo de imagen de disco como dispositivos de bloque (para, por ejemplo, montarlas), busque en kpartx .
Celada
@Celada, ¡Parece una buena solución! ¿Es kpartx solo un envoltorio para partx?
Timesquare
Creo que partxsolo funciona con discos reales, porque usa la magia de detección de particiones basada en el núcleo, mientras que kpartxusa el mapeador de dispositivos, un mecanismo genérico y más poderoso para crear dispositivos de bloque en el núcleo.
Celada
@Celada, kpartxno utiliza el kernel para la detección de la tabla de particiones, pero informa al kernel sobre ellos, por lo que requiere un dispositivo particionable, como un dispositivo de bucle.
psusi

Respuestas:

3

Debe asociar un dispositivo de bucle invertido con el archivo:

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

Luego corre dividido en eso.

psusi
fuente
Esto, lamentablemente no funciona. Gparted todavía está buscando / dev / loop0p1 para la primera partición listada en la tabla de particiones y así sucesivamente.
Timesquare
@Timesquare, entonces parece que tu libparted está rota. ¿Qué versión estás usando y qué distribución?
psusi
Mi versión libparted es 2.0.0 en Archlinux. Creo que el problema está en el método de Gparted de elegir el dispositivo de bloque que está asociado con un registro de partición dado. (Gparted es la versión 0.14.1)
Timesquare
@Timesquare, no, ese es el dispositivo de bloque correcto para la partición. Necesita separarse 3.0 o posterior.
psusi
Si entiendo lo que estás diciendo correctamente, el problema está en otra parte. Después de usar losetup como sugirió, los dispositivos de bloque / dev / loop0p1, / ​​dev / loop0p2 ... no existen.
Timesquare