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.