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
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
20 comentarios, deja el tuyo
que diferencia hay con dd_rescue ?
Nunca lo he usado, te lo debo amigo mio…
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
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.
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.
no había notado eso, gracias…
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 ^^
Un placer haberte ayudado colega 😀
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
WTF!! Super interesante … esto del progreso ayuda un montón 😀
Ciertamente. Yo había visto otro truco con el mismo objetivo, pero nunca logré que me funcionara, en cambio este si.
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.
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.
Muy util Hugo, Gracias!
Que buen post, me parece genial el uso que se le puede dar.
Saludos.
Un placer saber que te gustó 🙂
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…
> 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
Genial, muchas gracias.
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