De la Wiki de Arch Linux:https://wiki.archlinux.org/index.php/USB_flash_installation_media
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
[...] HacernoFalta la sincronización para completar antes de extraer la unidad USB.
Me gustaría saber
- ¿Qué hace?
- ¿Qué consecuencias hay si se deja fuera?
Notas
dd
comando usado con opcional status=progress
:
tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync
O usar pv
para progresar
tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync
Respuesta1
No dd
omite las cachés del disco del kernel cuando escribe en un dispositivo, por lo que es posible que una parte de los datos aún no se haya escrito en el USB
dispositivo una vez dd
finalizado. Si desconecta el USB
dispositivo en ese momento, el contenido del USB
dispositivo sería inconsistente. Por lo tanto, su sistema podría incluso no arrancar desde este USB
dispositivo.
Sync
vacía cualquier dato que aún esté en caché en el dispositivo.
En lugar de invocar, sync
puedes usar fdatasync
dd
la opción de conversión de:
sincronización de datos
escribir físicamente los datos del archivo de salida antes de terminar
En tu caso el comando sería:
tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync
El sistema conv=fdatasync
llama dd
efectivamente fdatasync()
a la llamada al final de la transferencia, justo antes de dd
las salidas (verifiqué esto con dd
las fuentes).
Esto confirma que dd
no omitirá ni borrará los cachés a menos que se le indique explícitamente que lo haga.
Respuesta2
Desde la página del manual de sincronización (1): "sincronización - Sincronizar escrituras en caché con almacenamiento persistente". Básicamente sync
se asegura de que todos sus datos se escriban en el dispositivo desde el caché.