ddは各入力ブロックを2倍のサイズに拡大/パディングする必要があります。

ddは各入力ブロックを2倍のサイズに拡大/パディングする必要があります。

私はこれを主張するいくつかの例を見つけましたが、ddが与えられたブロックサイズのファイルをそのブロックサイズの2倍に変換するように管理することはできません。

dd if=disk256bytesectors.img of=disk512bytesectors.img cbs=256 ibs=512 obs=512 conv=sync

私のディスクのimgサイズは10MBで、新しいイメージには20MBを期待していましたが、何もありません。

したがって、各256バイトブロックを512バイトブロックに変換する必要があり、各512バイトブロックの後半はnull、0、スペースなどになります。

dd手動状態遷移=同期

変換および出力の前に、ibsより短い入力ブロックをヌルバイトでこのサイズで埋めます。

しかし、入力ブロックは決して自分より短くはありませんか? ! ? !では、これはどういう意味ですか?

しかし、どうすればいいですか?

ベストアンサー1

コマンドに指定するときは、socatUnixドメインソケットの使用を使用できます。 ddへの入力が256バイトになるようにexec:データグラム()形式で設定できます。type=2

たとえば、データグラムごとに2バイト()が4()-b2で埋められます。bs=4

$ echo abcdefx | socat -u -b2 - exec:'dd bs=4 conv=sync',type=2 | od -c   
0000000   a   b  \0  \0   c   d  \0  \0   e   f  \0  \0   x  \n  \0  \0

上記のstdinのパイプの使用は、socatこのテストにのみ適用されます。通常、必要socat-bサイズ(たとえば)<file socat -u ...の完全な「チャンク」を読み取ることができるように、標準入力に直接入力ファイルを提供する必要があります。

おすすめ記事