Introducción

Hace unos días me he visto en la necesidad de crear un clone una tarjeta SD. Me puse a investigar software para MAC para hacerlo fácilmente para intentar olvidarme un poco del dd. Encontré información sobre varios elementos de softwareimagen tarjetas sd para poder hacerlo, sorpresa la mía, cuando lei como con el propio gestor de discos del sistema se podía hacer una imagen de la SD y volcarla de nuevo en una SD nueva. Obviamente las cosas no son tan sencillas como quieren hacernos creer y aunque he podido crear la imagen, he sido incapaz de usarla en otra tarjeta. Todavía no he conseguido adivinar el porque, lo único que sé es que el susodicho software me da un mensaje de error sobre número de parámetros incorrectos al tratar de grabar la imagen y no ha habido forma de hacerlo, y mira que he buscado por inet. Hay veces que el Mac OS me recuerda a Windows, lamentablemente mas veces de las que podía esperar.

En fin, puesto que en Mac OS el software que he probado o no funciona o es de pago me decidí a hacerlo con dd, que es gratis y se que funciona (lo se de linux obviamente). La única pega que le encontrado a la operación es a la hora de escritura, que es tremendamente lenta. Para que os hagáis una idea unas 2:30h para grabar una tarjeta SD de 15Gb.

Pasos duplicación SD

Creación imagen origen

Este primer paso consiste en a partir de una tarjeta SD obtener un fichero que se corresponda con la estructura y la información de la propia SD.

  • Abrimos una ventana de terminal y pasamos a ser root con el comando sudo por ejemplo
sudo -i
  • Se introduce la SD original (la que queremos duplicar) en la unidad
  • El sistema entonces montará de forma automática la SD con todas las particiones que tenga con diskutil list podemos ver un listado de las particiones de la unidad y lo que es mas importante del nombre de la misma asignado debajo de dev. En este ejemplo veremos que /dev/disk0 se corresponde con el disco de sistema, y /dev/disk1 que ademas tiene una capacidad de 15.9GB se corresponde con la SD que acabo de introducir en la unidad. Si alguien no esta seguro viendo los datos, que haga por eliminación una comparativa entre la salida de este comando antes de introducir la SD y después.

Captura de pantalla 2014-07-07 19.45.18

En este caso como se puede apreciar la SD muestra 4 particiones numeradas 1-4. La 0 debe corresponderse a lo que entiendo es una FAT de la SD, o eso me parece. Es importante en este punto quedarse con que la SD se corresponde con el dispositivo /dev/disk1.

  • Debemos desmontar el disco pero sin expulsarlo con el comando diskutil umountdisk <device>, en el ejemplo aquí tratado <device> = /dev/disk1

Captura de pantalla 2014-07-07 19.51.53

Importante desmontarlo y no hacer el eject. Si hacemos el eject no vamos a poder leer del dispositivo y por lo tanto no podríamos hacer la imagen del disco.

  • Una vez desmontado el disco procedemos a la creación de la imagen con dd empleando los parámetros if (input file) e of (output file) dd if=<dispositivo_tarjetaSD> of=<fichero imagen a crear>
dd if=/dev/disk1 of=imagen.raw
  • Hemos concluido la primera parte del proceso, ahora solo queda escribir la imagen en la SD destino. Para ello emplearemos del fichero imagen.raw (por defecto estará ubicado en /var/root/imagen.raw) que hemos creado en el paso anterior.
  • Podemos expulsar la SD origen
diskutil eject /dev/disk1

Creación SD destino

Esta segunda parte consiste en escribir la imagen obtenida con anterioridad en la SD destino. La SD destino que por otra parte debe tener al menos el mismo tamaño que la origen, no puede ser menor.

  • Abrimos un terminal
  • Pasamos  a ser root con sudo por ejemplo
sudo -i
  • Introducimos la SD destino de la imagen y el sistema la montara como ha hecho anteriormente. Si la SD está vacía simplemente nos dirá que no puede leerla. Omitimos cualquier operación sobre la tarjeta en esta última circunstancia.
  • Echamos un vistazo a la salida de diskutil list, al igual que hicimos con anterioridad, para saber a que dispositivo corresponde la SD, aunque lo normal es que corresponda con el mismo que en el paso anterior. Vamos a suponer que el dispositivo es el mismo que antes /dev/disk1
  • Solo quedan dos pasos, como hemos hecho antes desmontamos los sistemas de ficheros que puedan existir en la unidad destino
diskutil umountdisk /dev/disk1
  • Grabamos la imagen creada con anterioridad en la SD. Sed pacientes porque este proceso es lento, muy lento, y no se muy bien el por que.
dd if=imagen.raw of=/dev/disk1
  • Proceso concluido. Ya tenemos una SD copia exacta de la primera.

Un saludo a todos y espero que os sirva este pequeño FAQ. En mi caso lo uso para tener siempre una 2ª SD para la raspberrypi…por si acaso se cae el que tiene no tener que estar perdiendo el tiempo volviendo a instalar todo de 0.

Comments (1)

Marvell

Ago 14, 2015 at 1:22 PM

Después de un tiempo empleando el proceso descrito, decir que el único inconveniente que tiene es a la hora de pasar la imagen a una nueva tarjeta, el tiempo es bastante elevado.
Las tarjetas son buenas, en concreto las Sandisk SD & SDHC Extreme/ Extreme III/ Extreme HD Video 45MB/s Class UHS-1, que pienso son de las mejores del mercado, da la impresión de que la unidad de tarjetas del macbook pro que uso no es todo lo rápida que esperaba.
La escritura completa de una de ellas se lleva fácilmente unas 3 horas, lo que me parece un tanto exagerado.
Por lo demás el proceso funciona a la perfección.

Para mejorar los tiempos, he dejado de escribir la imagen en otras tarjetas en el momento que hago la copia. Lo que hago es almacenar la copia y cuando necesito restaurar la RPI es cuando escribo la misma.

Si alguno de los lectores tiene alguna idea mejor, mejor dicho, mas cómoda, que lo diga.

You must be logged in to post a comment.