viernes, 19 de octubre de 2012

Utilizar losetup para montar imágenes de dispositivos de bloques

Con las tarjetas de memoria tipo Compact Flash o las MicroSD es frecuente encontrarse que tienen varias particiones y que nos puede resultar díficil acceder a una de sus particiones a partir de un backup realizado sobre la tarjeta de memoria al completo.

Si hacemos un volcado con el comando dd de la partición sdb1 no hay problemas para montar luego la imagen, pero si hacemos el volcado del dispositivo al completo sdb, las opciones normales de mount no nos sirven para acceder a las particiones, impidiendo que podamos montarla. Hemos de recurrir al parámetro offset, dentro la opciones de mount. En este parámetro le pasamos el valor en bytes de donde empieza la partición que vamos a utilizar

Por ese motivo, necesitamos saber la disposición de las particiones (donde empiezan y acaban), es decir, necesitamos saber el mapa de particiones que tenía el dispositivo cuando hicimos el dump (salvar junto con el dump la salida del comando fdisk -l /dev/sdb por ejemplo).

Pero hay una opción mucho mejor, que evita ese paso, utilizando el comando losetup. Losetup nos permite montar un archivo de imagen (obtenido con dd) en un dispositivo /dev/loopX. Luego podemos utilizar el dispositivos loopX como si fuera un /dev/sdXX con el comando mount. La chuleta puede ser algo como esto:

  • Generar una imagen de un dispositivo al completo: dd if=/dev/sdb of=archivo_imagen.dd
  • Para montar en /dev/ hacemos : losetup -f archivo_imagen.dd
  • Para ver donde se ha montado: losetup -a
  • Para ver las particiones: fdisk -l /dev/loop0
  • Para montar la partición segunda: mount -t ext3 /dev/loop0p2 /mnt/particion2

Nota extra: no sólo sirve para memorias Compact Flash, microSD o Pendrive USB, se puede emplear con cualquier dispositivo de bloques (un disco duro por ejemplo).