Dal Wiki di 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
[…] non manca la sincronizzazione per completare prima di estrarre l'unità USB.
Vorrei sapere
- Cosa fa?
- Quali conseguenze ci sono se omesso?
Note
dd comando utilizzato con status=progress opzionale :
tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync
O usando pv per il progresso
tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync
Risposta accettata:
Il dd non bypassa le cache del disco del kernel quando scrive su un dispositivo, quindi una parte dei dati potrebbe non essere ancora stata scritta sulla USB attenersi a dd completamento. Se scolleghi la tua USB incollare in quel momento il contenuto sulla USB bastone sarebbe incoerente. Pertanto, il tuo sistema potrebbe anche non avviarsi da questo USB bastone.
Sync scarica tutti i dati ancora presenti nella cache nel dispositivo.
Invece di invocare sync potresti usare fdatasync dd opzione di conversione:
fdatasync
scrivere fisicamente i dati del file di output prima di terminare
Nel tuo caso, il comando sarebbe:
tar -xzOf archlinux-2016-09-03-dual.iso |
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync
Il conv=fdatasync rende dd chiama effettivamente fdatasync() chiamata di sistema al termine del trasferimento appena prima di dd exits (l'ho verificato con dd fonti).
Questo conferma che dd non bypasserà né svuota le cache a meno che non venga esplicitamente indicato in tal senso.