Siguiendo las instrucciones en esta página, la página mostró un dd
comando y una sync
opción al final. El comando es el siguiente:
xzcat ~/ubuntu.img.xz | sudo dd of=/dev/sdX bs=32M sync
Sé qué es dd
y cómo funciona, pero nunca he oído hablar de esta sync
opción ni la he usado , y su entrada de página manual es como:
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
¿Qué es NUL
y por qué se rellena ibs-size
, y por qué molestarse en rellenar los bloques de datos y usar la sync
opción con el dd
comando? ¿Por qué no mantenerlo simple y fácil?
Cuando intento ejecutar sync
el comando tal como está con la ubicación y los valores apropiados, aparece el siguiente error:
dd: unrecognized operand ‘sync’
Try 'dd --help' for more information.
dd ... conv=sync
argumento.conv=sync
opción, parece bastante claro por qué no se usa para esto. En el mejor de los casos, no haría nada, en el peor, corrompería la imagen durante la copia.oflag=fsync
(que elimina la salida dd ha escrito) en lugar de unsync
comando (que vuelca todo en el sistema.sync
es un argumento para ambosconv
y las opcionesiflag
ooflag
.Por defecto, dd leerá los datos un bloque a la vez, posiblemente leyendo en un bloque más corto que el especificado por el usuario, ya sea al final del archivo o debido al comportamiento del dispositivo fuente; Esto se llama un registro parcial . Luego escribirá un bloque que tenga el mismo tamaño que la cantidad que leyó.
Dd repetirá esto hasta que se alcance el conteo especificado, o vea eof en la entrada, o error en la entrada o salida. Cuando finaliza, dd informa el número de registros completos y parciales que leyó y escribió.
Este comportamiento está bien para copiar un archivo ordinario dentro de un sistema de archivos o sobre una conexión de red TCP, ya que se considera una secuencia de bytes. Pero otros objetos del sistema de archivos, como los DVD sin formato y la cinta magnética, requieren tamaños de escritura que se encuentran dentro de ciertos rangos y son un múltiplo redondo de cierta cantidad (como 512 o 2048 bytes). Por ejemplo, si tiene una imagen de disco que tiene 255 pistas de 63 sectores de 512 bytes, y desea escribir en una cinta que requiere un tamaño de bloque de 1024 bytes, deberá hacer algo como
para asegurarse de que dd no intente escribir un bloque de 512 bytes al final. El bloque más corto al final se rellenará con ceros o espacios en blanco. El relleno con ceros es una opción segura y común. La opción de dd para rellenar con espacios en blanco es útil en una situación diferente: convertir un archivo que tiene líneas de longitud variable a uno con líneas de longitud fija.
fuente
He descubierto que el sistema Linux, no dd, almacena en caché los búferes. Por lo tanto, cuando se completa el comando dd, ejecuto sync como
No he usado ninguna opción de dd interna para provocar el vaciado del búfer. Normalmente, sin embargo, cuando estoy creando una versión USB de una distribución, soy el único en la computadora, por lo que no tengo reparos en que mi comando publicado dañe. Como ejecuto la sincronización como &&, la sincronización se realiza con derechos de sudo y estoy seguro de que el USB que creo está completo.
fuente
Puede usar la
sync
opción de salida, que se incluye endd
comand, poroflag
símbolo:fuente