ノート

ノート

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データの一部がまだスティックに書き込まれていない可能性があります。その時点でスティックを取り外すと、スティックの内容に矛盾が生じます。そのため、このスティックからシステムを起動できなくなる可能性もあります。USBddUSBUSBUSB

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(これはのソースで確認しました)。ddfdatasync()dddd

これにより、dd明示的に指示されない限り、キャッシュをバイパスしたりフラッシュしたりしないことがわかります。

答え2

sync(1) マニュアル ページから: 「sync - キャッシュされた書き込みを永続ストレージに同期します」。基本的に、syncすべてのデータがキャッシュからスティックに書き込まれるようにします。

関連情報