Tabla de Contenidos

Montar particiones contenidas en una imagen

Como probablemente sea conocido, comandos como dd permiten realizar una salva o imagen de una partición, o incluso de un dispositivo con varias particiones, por ejemplo:

sudo dd if=/dev/sdb of=~/imagen.ima bs=512

Luego podemos restaurar dicha imagen en el dispositivo también mediante dd:

sudo dd if=~/imagen.ima of=/dev/sdb

Sucede que en ocasiones puede que necesitemos acceder a esas particiones directamente desde la imagen para ver o modificar algo, sin tener que restaurarlas en un disco físico. Afortunadamente esto también es posible.

Una sola partición

Montar la imagen realizada a una sola partición no es un problema, basta con utilizar el comando mount con el parámetro loop

sudo mkdir -p /media/img1 && sudo mount -o loop ~/imagen.ima /media/img1

Varias particiones

Ahora, montar una partición en particular desde la imagen de un dispositivo que contenía varias particiones mediante el comando mount no es tan simple, porque para esto además necesitamos pasar el offset o dirección de memoria donde dicha partición comienza en el archivo de imagen.1)

Afortunadamente, existe una herramienta llamada kpartx que permite detectar los segmentos de particiones en dispositivos y crear mapeos de tipo loopback, lo cual simplifica el proceso.

Instalar esta herramienta es fácil, por ejemplo en Debian GNU/Linux y derivadas podría utilizarse el siguiente comando:

sudo aptitude install kpartx

Una vez instalada la aplicación, utilizarla es fácil. Por ejemplo, supongamos que en este caso pretendemos montar la primera partición de una imagen que contenía una partición principal de unos 2 GB y una swap de unos 512 MB:

sudo kpartx -av ~/imagen.ima

Este comando debería producir una salida como esta:

add map loop0p1 (254:9): 0 3906251 linear /dev/loop0 63
add map loop0p2 (254:10): 0 1000001 linear /dev/loop0 3906314

Consecuentemente, en /dev/mapper/ debería aparecer un dispositivo tipo loopback por cada partición detectada, de modo que listando el contenido de dicho directorio, deberíamos obtener algo como esto:

lrwxrwxrwx  1 root root      7 Oct  2 08:45 loop0p1 -> ../dm-1
lrwxrwxrwx  1 root root      8 Oct  2 08:45 loop0p2 -> ../dm-2

Entonces, si la primera partición es la principal y la segunda es la swap, podríamos montar la partición principal con un comando como este:

sudo mkdir -p /media/img1 && sudo mount /dev/mapper/loop0p1 /media/img1

Esto debería permitirnos acceder a la partición para visualizar o modificar datos a conveniencia.

Una vez finalizado el trabajo sobre la partición, conviene desmontarla y eliminar los mapeos creados:

sudo umount /media/img1
sudo kpartx -d ~/imagen.ima

Eso es todo. Como vemos, gracias a la flexibilidad que permite el software libre, montar particiones contenidas en imágenes no es para nada un problema.

Atribuciones

1)
En realidad el offset puede obtenerse fácilmente con el comando sudo fdisk -lcu ~/imagen.ima