Arch Linux Wiki より:https://wiki.archlinux.org/index.php/USB_flash_installation_media
# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync
[...] するないUSB ドライブを取り外す前に同期を完了する必要があります。
私が知りたいのですが
- それは何をするためのものか?
- 省略した場合、どのような結果が生じますか?
ノート
dd
オプションで使用されるコマンドstatus=progress
:
tar -xzOf archlinux-2016-09-03-dual.iso | dd of=/dev/disk2 bs=4M status=progress && sync
またはpv
進歩のために使用する
tar -xzOf archlinux-2016-09-03-dual.iso | pv | dd of=/dev/disk2 bs=4M && sync
答え1
デバイスに書き込むときにカーネル ディスク キャッシュをバイパスしないため、完了時にdd
データの一部がまだスティックに書き込まれていない可能性があります。その時点でスティックを取り外すと、スティックの内容に矛盾が生じます。そのため、このスティックからシステムを起動できなくなる可能性もあります。USB
dd
USB
USB
USB
Sync
キャッシュ内に残っているデータをデバイスにフラッシュします。
を呼び出す代わりに、の変換オプションsync
を使用できます。fdatasync
dd
fdatasync
終了する前に出力ファイルのデータを物理的に書き込む
あなたの場合、コマンドは次のようになります:
tar -xzOf archlinux-2016-09-03-dual.iso | \
dd of=/dev/disk2 bs=4M status=progress conv=fdatasync
は、終了直前の転送終了時にシステム コールを効果的に呼び出しますconv=fdatasync
(これはのソースで確認しました)。dd
fdatasync()
dd
dd
これにより、dd
明示的に指示されない限り、キャッシュをバイパスしたりフラッシュしたりしないことがわかります。
答え2
sync(1) マニュアル ページから: 「sync - キャッシュされた書き込みを永続ストレージに同期します」。基本的に、sync
すべてのデータがキャッシュからスティックに書き込まれるようにします。