this ページの指示に従って、ページの最後にdd
コマンドとsync
オプションが表示されました。コマンドは次のとおりです。
xzcat ~/ubuntu.img.xz | Sudo dd of=/dev/sdX bs=32M sync
dd
とは何か、どのように機能するかは知っていますが、sync
オプションを聞いたり使用したりしたことがなく、マニュアルページのエントリは次のようになります。
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
NUL
とは何ですか?なぜibs-size
に埋め込まれるのですか?また、なぜデータブロックをパディングしてsync
オプションをdd
コマンドで使用するのですか?シンプルで簡単にしないのはなぜですか?
sync
を適切な場所と値でそのままコマンドで実行しようとすると、次のエラーが表示されます。
dd: unrecognized operand ‘sync’
Try 'dd --help' for more information.
コマンドを誤読しています。それは:
xzcat ~/ubuntu.img.xz | Sudo dd of=/dev/sdX bs=32M
sync
sync
は別のコマンドです。ここでは。 man 1 sync
を参照してください:
NAME
sync - flush file system buffers
SYNOPSIS
sync [OPTION]
DESCRIPTION
Force changed blocks to disk, update the super block.
キャッシングを考えると、なぜそれが使用されるのかは明らかです。
dd
オプションについては、 conv
オプション の値です:
Each CONV symbol may be:
ascii from EBCDIC to ASCII
...
sync pad every input block with NULs to ibs-size; when used with
block or unblock, pad with spaces rather than NULs
使用された場合(使用されていない場合)、次のように使用されます。
dd ... conv=sync
デフォルトでは、ddは一度に1ブロックずつデータを読み込みます。ファイルの最後またはソースデバイスの動作により、ユーザーが指定したよりも短いブロックを読み込む可能性があります。これは部分レコードと呼ばれます。次に、読み取った量と同じサイズのブロックを書き出します。
Ddは、指定されたカウントに達するまでこれを繰り返すか、入力でeofを検出するか、入力または出力でエラーを検出します。終了すると、ddは読み取りおよび書き込みを行った完全および部分的なレコードの数を報告します。
この動作は、ファイルシステム内またはTCPネットワーク接続を介して通常のファイルをコピーする場合に適しています。これは、バイトストリームと見なされるためです。ただし、未加工のDVDや磁気テープなどの他のファイルシステムオブジェクトには、特定の範囲内で、一定量の丸め倍数(512または2048バイトなど)の書き込みサイズが必要です。たとえば、63 512バイトセクタの255トラックのディスクイメージがあり、1024バイトのブロックサイズを必要とするテープに書き込みたい場合は、次のようにする必要があります。
dd if=disk.img of=/dev/rmt0 bs=1k conv=sync
ddが最後に512バイトのブロックを書き出さないようにするためです。末尾の短いブロックには、ゼロまたは空白が埋め込まれます。ゼロでパディングすることは、安全で一般的な選択です。 ddが空白で埋めるオプションは、さまざまな状況で役立ちます-可変長行を持つファイルを固定長行を持つファイルに変換します。
出力にsync
オプションを使用できます。これは、dd
記号によってoflag
コマンドに含まれます。
xzcat ~/ubuntu.img.xz | Sudo dd of=/dev/sdX bs=32M oflag=sync
DdではなくLinuxシステムがバッファをキャッシュすることがわかりました。したがって、ddコマンドが完了したら、次のようにsyncを実行します。
Sudo dd if=my.downloaded.iso of=/dev/sd(?) bs=1M && sync
バッファフラッシュを引き起こすために内部ddオプションを使用していません。ただし、通常、ディストリビューションのUSBバージョンを作成するときは、自分がコンピューター上で唯一のユーザーであるため、投稿されたコマンドに害を及ぼす心配はありません。同期を&&として実行しているため、同期はSudo権限で行われ、作成したUSBが完全であると確信しています。