montar-dd

Montar una imagen DD o RAW

Hoy vamos a ver como montar una imagen raw creada con dd y así acceder a los datos que hay dentro.

Casi al final del artículo Jugando con la Raspberry Pi – Configuración Inicial hablé de como crear una copia de seguridad con dd. Este tipo de imágenes son como un disco, con su sector de arranque, una o varias particiones, uno o varios sistemas de archivos y por tanto no se pueden montar como si fueran una ISO.

Aunque no podemos montar el disco entero, sí que podemos montar las particiones por separado y así acceder a su contenido.

Para este artículo voy a usar de ejemplo una imagen que tengo hecha de una tarjeta SD con Raspbian. Manos a la obra.

 

Ver la estructura de la imagen (las particiones)

Lo primero es ver que estructura tiene nuestra imagen. Para esto vamos a usar fdisk:

sudo fdisk -l imagen

 

La salida de este comando será algo como esto:

Disk rbpi_lite_config.img: 7.3 GiB, 7780433920 bytes, 15196160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xacde91c7

Device                Boot Start      End  Sectors  Size Id Type
rbpi_lite_config.img1       8192    93813    85622 41.8M  c W95 FAT32 (LBA)
rbpi_lite_config.img2      94208 15196159 15101952  7.2G 83 Linux

Como podemos ver en la primera línea es una imagen de una SD de 8GB. La segunda y tercera líneas nos dicen que cada sector tiene un tamaño de 512 bytes. También vemos al final que tiene dos particiones , una en FAT32 y otra Linux (en este caso ext4).

Como fdisk muestra sólo el tipo de partición pero no el sistema de archivos que tiene y necesitamos saberlo podemos usar para eso cfdisk.

sudo cfdisk imagen

 

cfdisk

Podemos ver abajo en Filesystem que el sistema de archivos es ext4.

Ahora necesitamos saber donde empieza la partición que queremos montar (en bytes). Si nos fijamos en la columna Start que nos dan tanto fdisk como cfdisk la segunda partición (la de ext4) que es la que quiero montar empieza en el sector 94208 y además sabemos que cada sector tiene 512 bytes.

El comienzo de la partición en bytes será 94208 * 512, esto es lo que se conoce como offset.

Un truco para no tener que andar multiplicando es dejar que la shell haga la multiplicación necesaria para calcular el offset escribiendo $(( 94208 * 512 )).

 

Montar la partición deseada

Una vez que tenemos todo lo necesario, vamos a montar una imagen dd (de forma general) escribiendo:

sudo mount -t filesystem -o loop,ro,offset=$((start*512)) imagen punto_montaje
  • -t indicamos el sistema de archivos en mi caso ext4
  • -o indica las opciones para mount
  • loop es necesario para convertir una imagen estática en una imagen dinámica.
  • ro es en modo lectura (read-only)
  • offset indica donde empieza la partición que vamos a montar (en bytes)
  • start es el dato de correspondiente a la columna start que nos da fdisk o cfdisk

 

En mi caso, la linea para montar la segunda partición de la imagen de ejemplo en /mnt sería:

sudo mount -t ext4 -o loop,ro,offset=$((94208*512)) rbpi_lite_config.img /mnt

 

Decir que como vamos a montar un sistema de archivos al uso se mantienen los permisos y el propietario de los ficheros y carpetas, así que es posible que para acceder a algunas carpetas tengamos que hacerlo como root.

 

Una vez que hemos terminado con la imagen la desmontamos como siempre con umount:

sudo umount punto_montaje

 

Y hasta aquí el artículo de hoy.
Saludos linuxeros.

 

Iconos de imagen destacada hechos por Freepik en www.flaticon.com con licencia CC 3.0 BY.

2 comentarios en “Montar una imagen DD o RAW”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.