¿Qué sucede cuando hago "cat debian.iso> / dev / sdX"?

10

Estoy creando un USB en vivo y no entiendo con precisión: ¿qué sucede cuando copio un archivo (o incluso un sistema de archivos) directamente a un nodo del dispositivo (a diferencia de un sistema de archivos)?

Boris Burkov
fuente

Respuestas:

16

El shell abrirá el dispositivo /dev/sdX. Toda la salida del catcomando, que termina siendo el contenido de debian.iso, se escribe directamente en ese dispositivo.

El resultado final es que debian.isose escribe byte por byte al comienzo del disco subyacente /dev/sdX.

En efecto, el nodo del dispositivo hace que parezca que los contenidos de bajo nivel de su medio de almacenamiento se comportan como un solo archivo. Estás escribiendo en este "archivo" y, por lo tanto, escribiendo en el medio de almacenamiento. Esta filosofía se conoce como "todo es un archivo" y se considera una de las características definitorias de un sistema Unix.

Jim Paris
fuente
99
¿Es este comando diferente de dd if=debian.iso of=/dev/sdX?
2
@htor, no significativamente, pero ddle da más control sobre los tamaños de bloque, el valor predeterminado depende de la implementación (por ejemplo, 1 o 512 bytes). Con ddusted puede elegir un mejor tamaño para su dispositivo de bloque, como 4096 bytes.
mrb
Gracias Jim. ¿Significa eso que al ejecutar este comando, sobrescribo MBR con la tabla de particiones y la partición FAT en mi flash y lo lleno con el sistema de archivos ISO-9660 con sus sectores de 2048 bytes y el cargador de arranque en algún lugar? No sé cómo debe funcionar, porque la especificación de CD de arranque de El Torito permite varios modos de acción de esa imagen de CD: emulación de disquete, emulación de disco duro y sin emulación. ¿Podría explicar también qué sentido tiene decirle a dd (si lo uso en su lugar), qué tamaño de bloques debería usar, si el tamaño de bloque está determinado por el sistema de archivos (es decir, deben ser 2048 bytes en ISO)
Boris Burkov
2
@Bob Excepto con las unidades de cinta, el tamaño de bloque que pasa ddinfluye en el rendimiento, pero no en qué datos se leen y escriben. No hay relación entre el ddtamaño del bloque y el tamaño del bloque del CD o el tamaño del bloque del sistema de archivos. Unos pocos megabytes generalmente le brindarán el mejor rendimiento, aunque catpueden ser más rápidos que dd.
Gilles 'SO- deja de ser malvado'
2
¿Qué tal el sector de arranque, / dev / sdX luego arrancará tan normal como la imagen de CD / DVD?
matemáticas