[dd] Usos en sistemas GNU/Linux

Como todos sabemos, el querido dd [comando dd en sistemas GNU/Linux] es un muchachón genial a la hora de hacer isos, salvar/escribir MBR entre otras tareas. Pero ahora bien, ¿cómo hago un ISO con él?

Muy fácil, sólo ejecute en su terminal lo siguiente:

dd if=/dev/cdrom of=/home/Install/Isos/debian-7.0.0-i386-CD-1.iso

if, viene de “input file”, y of viene de “output file”, lo que obviamente leyendo en el man se le saca un poquito más de jugo a la naranja xD. En el if se especifica cual va a ser el dispositivo de entrada, y en el of se va a especificar la ruta de salida de nuestro archivo ISO. Nota importante, con cat se logra hacer lo mismo, lo que cat no lleva if ni of.

cat /dev/cdrom /home/Install/Isos/debian-7.0.0-i386-CD-1.iso

Entonces, ya habiendo conocido esto, vamos a ir adelantando. Otro de los usos, es para sodomizar los USB[¿Sodomizar?], si, ya se que suena feo, pero bueno, para los que compran memorias USB y son cardiácos a que los roben, es decir, que le vendan una USB de 4GB y sea de 128MB, lo cual molesta mucho, podemos hacer una prueba muy básica:

Test de escritura:
dd if=/dev/zero of=/dev/sdb1 bs=1M count=4096

Test de lectura:
dd if=/dev/sdb1 of=/dev/null bs=1M count=4096

Copiando/leyendo 4GB de ceros al USB, comprobando que de verdad es de 4GB. Si termina antes y no pone la cantidad prefijada, te han estafado xD.

Nota: revisa bien cual es el dispositivo USB que conectaste, porque puedes invitar al baile a tu HDD[SATA] y perder toda la info que en el tengas!!!

Otros usos variados…

Clonar un disco duro, para discos IDE:
dd if=/dev/hda of=/dev/hdb bs=1M

para discos SATA:
dd if=/dev/sda of=/dev/sdb bs=1M

Copiar el Master Boot Record:
dd if=/dev/hda of=mbr count=1 bs=512

Para restaurar el MBR:
dd if=mbr of=/dev/hda

Crear un archivo swap de 1GB:
dd if=/dev/zero of=/boot/swap_space bs=1M count=1024
mkswap /boot/swap_space
swapon /boot/swap_space

[Y para hackers xD, #ZOMG, hackers]

Hace algunos días estuve leyendo maneras de formatear nuestro HDD, sin dejar rastro en él de nada de lo que había anteriormente, ni siquiera usando alguna herramienta ultrasecreta de recuperamiento de información, y para intriga/satisfacción mía dd figuraba entre las alternativas posibles.

Pero ¿cómo puedo hacer esto? Fácil:

dd if=/dev/zero of=/dev/sda bs=1M

Llenando el disco duro con ceros. Con bs=1M, estamos diciendo que tanto la lectura como la escritura se haga en bloques de 1 megabyte. Tambien podemos usar /dev/random, pero demora un mundo, lo que lo hace merecedor de un último lugar en el test de borrado rápido :D.

Así el FBI no encontrará nada en tu HDD xD…

Referencias:

http://en.wikipedia.org/wiki/Dd_%28Unix%29
http://es.wikipedia.org/wiki//dev/zero
http://linuxzone.es/dd-clona-y-graba-discos-duros-facilmente/


20 comentarios

  1.   sieg84 dijo

    que diferencia hay con dd_rescue ?

    1.    Koratsuki dijo

      Nunca lo he usado, te lo debo amigo mio…

      1.    sieg84 dijo

        Lo pregunto porque en la wiki de openSUSE para crear un live-usb, antes lo tenían con dd, ahora está (ya tiene tiempo) con dd_rescue, algo así.:
        ~> su
        # grep -Ff <(hwinfo –disk –short) <(hwinfo –usb –short)
        # umount /dev/sdXY
        # dd_rescue openSUSE-11.4-KDE-LiveCD-x86_64.iso /dev/sdX

        es.opensuse.org/SDB:Live_USB_stick#Grabar_la_ISO_a.C2.A0la_memoria_USB_3

  2.   Manuel R dijo

    Gracias por la información, aunque sé que existen herramientas gráficas para crear las isos, siempre me ha gustado usar la terminal ^^. Además no sabía que se podía respaldar el MBR. Saludos.

  3.   proper dijo

    Está genial pero para los USB Drives el número que pones está en base 2 y debería estar en base 10, que es lo que se usa para almacenar información.

    1.    Koratsuki dijo

      no había notado eso, gracias…

  4.   AurosZx dijo

    Me fue de ayuda 🙂 Hice un respaldo de la partición de Arch, la borré, la volví a crear como lógica (era primaria) y con dd devolví los datos a su lugar. Muy útil ^^

    1.    Koratsuki dijo

      Un placer haberte ayudado colega 😀

  5.   Crisnepita dijo

    Si le agrega una pipa ” | ” con el comando “pv” se puede ver una barra de progreso y los detalles de la escritura.

    Por ejemplo así para un USB:

    dd if=/ruta/de/imagen.iso |pv| dd of=/dev/sdX

    1.    KZKG^Gaara dijo

      WTF!! Super interesante … esto del progreso ayuda un montón 😀

      1.    Hugo dijo

        Ciertamente. Yo había visto otro truco con el mismo objetivo, pero nunca logré que me funcionara, en cambio este si.

    2.    Giskard dijo

      Lo mejor para ver progresos es usar dcfldd que es un replacement de DD pero con muestra de progreso. Es lo que yo uso. La sintaxis es la misma que en dd.

      http://dcfldd.sourceforge.net/

      Lo iba a comentar hace mucho pero el post estaba cerrado a comentarios.

  6.   Hugo dijo

    Algo curioso es que el significado original de las siglas dd aparentemente se ha borrado con el tiempo, de modo que se le puede llamar de muchas formas: duplicate device, disk duplicator, data dump, disk destroyer, etc.

    Una aplicación de dd es limpiar una tabla de particiones. Esto puede ser útil para hacer un esquema de particionado en limpio sobre un disco usado, sin necesidad de borrar todo el disco. Por ejemplo, si el sistema detecta el disco como /dev/sdb podríamos escribir en cero los primeros 256MB (en realidad la tabla de particiones se encuentra en los primeros 512 bytes, pero como los primeros sectores del disco suelen ser críticos, para mayor seguridad yo limpio más espacio)

    dd if=/dev/zero of=/dev/sdb bs=512 count=512K

    Además, en ocasiones escribir con ceros una memoria flash puede ayudar a recuperarla, para lo cual puede utilizarse un procedimiento similar.

    Otro uso más interesante es para obtener información sobre el BIOS sin necesidad de reiniciar, lo cual es posible porque en Linux casi todos los recursos se gestionan como ficheros, incluyendo la memoria RAM (la información del BIOS se cachea en los últimos 32KB del primer MB de memoria).

    dd if=/dev/mem bs=32k skip=31 count=1 | strings -n 8 | grep -i bios

    Este comando lo que hace es definir el tamaño del bloque en 32 kilobytes y saltar los primeros 31 bloques (es decir, saltar 992 kilobytes), filtrar la salida para mostrar sólo las cadenas de 8 o más caracteres, y buscar en dichas cadenas la que contiene la palabra BIOS.

    1.    Elynx dijo

      Muy util Hugo, Gracias!

  7.   Dr. Byte dijo

    Que buen post, me parece genial el uso que se le puede dar.

    Saludos.

    1.    KZKG^Gaara dijo

      Un placer saber que te gustó 🙂

  8.   Hugo dijo

    Otro uso que no recordaba, es crear un archivo de un tamaño adecuado que luego se puede formatear y montar con loop como si se tratase de una partición, lo cual es muy util para crear una partición con permisos restringidos en un sistema que se ha montado con una sola partición en el disco. Incluso, un archivo preparado de esta manera se puede exportar por la red como un dispositivo de bloque mediante AoE y otra PC lo detectaría como si fuese un disco local. Además, dd se puede utilizar para hacer un dump de la memoria RAM y revisarla luego con calma (si hace falta) sin descomponer el equipo. En fin…

  9.   Sys dijo

    > Muy fácil, sólo ejecute en su terminal lo siguiente:

    > dd if=/dev/cdrom of=/home/Install/Isos/debian-7.0.0-i386-CD-1.iso

    No es tan fácil.

    *** En http://www.tech-recipes.com/rx/2769/ubuntu_how_to_create_iso_image_from_cd_dvd se decía:

    Dd doesn’t have any checking. What happens if you have some wild hard drive activity, and you don’t get all the bits copied? You have a bad ISO, and you won’t know it.

    Instead, you should be using the right tool for the right job. In this case, you need to check out the ‘readom’ command (read optical media). It does exactly what you’re looking for, and has built in error checking.

    readom dev=/dev/scd0 f=/home/shamanstears/test.iso

    If you want to record the ISO, then you should be using ‘wodim’, not ‘dd’, or any other horrible “solution”.

    wodim -v -eject /home/shamanstears/test.iso

    This will burn your ‘test.iso’ to your blank CD, assuming it’s already inserted, and eject when it’s finished. It’ll even be verbose about it’s output along the way. These sort of shoddy tips and tricks are what get a lot of users in trouble. Remember- use the right tools for the right job, and everyone will be happy.

    *** En http://www.tech-recipes.com/rx/2769/ubuntu_how_to_create_iso_image_from_cd_dvd se decía:

    I tried using dd to create an ISO of a SLES11 DVD but instead of creating a 3GB image it created a 4.4GB iso – a full DVD’s worth with all

  10.   Alex dijo

    Genial, muchas gracias.

  11.   Sodoma dijo

    lo he hecho antes y funciona, pero siempre tengo el mismo problema de no saber cual es usb (en mi caso una SD). Siempre olvido lo mismo

Deja un comentario

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