J'utilise la commande dd pour créer un fichier USB amorçable à partir d'un fichier iso:
Sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M
Après avoir appuyé sur enter, il sort momentanément et me donne:
915+0 records in 915+0 records out 959447040 bytes (959 MB) copied,
0.539375 s, 1.8 GB/s
Donc, c'est comme courir en arrière-plan parce que je peux voir que le lecteur flash fonctionne. Finalement, la copie s'arrêtera et je pourrai retirer le lecteur avec succès, mais la question est pourquoi la commande dd n'attend-elle pas la fin de la copie? Pourquoi est-elle exécutée en arrière-plan? Et comment puis-je le faire attendre?
Malgré la croyance populaire, dd
est une commande parfaitement ordinaire, elle n’est pas plus de bas niveau que cat
ou cp
. Votre commande lit à partir du cache disque et écrit dans les tampons de disque comme toute autre commande.
Afin de vous assurer que les données sont entièrement écrites sur le support physique, vous devez appeler sync
. La commande sync
vide tous les tampons de sortie sur le (s) disque (s). Lorsque la commande sync
est renvoyée, les données ont été entièrement écrites.
Sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx bs=1M; sync
La plupart du temps, vous n'avez pas besoin d'appeler sync
, car le démontage d'un système de fichiers fait le même travail. Lorsque la commande umount
est renvoyée ou lorsque vous recevez un message de confirmation après avoir cliqué sur "Ejecter", les mémoires tampons ont été écrites sur le disque. Ici, vous écrivez directement sur le disque sans passer par un système de fichiers monté, vous devez donc vider explicitement le tampon.
Notez qu'au lieu de dd
, vous pouvez utiliser tee
. Cela présente deux avantages: il y a moins de risque d'inverser la source et la destination en raison d'une faute de frappe, et c'est probablement un peu plus rapide .
<~/Desktop/ubuntu.iso Sudo tee /dev/sdx >/dev/null; sync
Essaye ça:
Sudo dd if=~/Desktop/ubuntu.iso of=/dev/sdx conv=fdatasync bs=1m
Le conv=fdatasync
indique à dd
d'utiliser les options spéciales pour s'assurer que les données sont écrites sur le périphérique physique.