dd出力:/dev/sg11に書き込もうとしたときに「機能が実装されていません」

dd出力:/dev/sg11に書き込もうとしたときに「機能が実装されていません」

次のコマンドを使用しようとしています。

dd if=/dev/urandom of=/dev/sg11 bs=16K count=1

しかし、実行すると、次のエラーが発生します。

dd: writing `/dev/sg11': Function not implemented

使用しようとするとエラーdd if=/dev/urandom of=/dev/sg11 bs=16K count=1 conv=fsyncが発生しcannot allocate memoryFunction not implementedbsサイズを大きくするとエラーになります。

この問題の原因と解決策は何ですか?

更新:時々それは私に知らせ、そして同じbs値についてcannot allocate memory再度知らせます。function not implemented

答え1

/dev/sgxxネイティブSCSIコマンドを送受信できるSCSI汎用デバイスです。デバイスに書き込むときに実行するアクションを定義するSCSIヘッダーから書き込みを開始する必要があります。

sgデバイスにランダムなデータを書き込むのは本当に悪い考えです。存在しない可能性がある任意のSCSIコマンドを送信し(したがってfunction not implemented)、操作にランダムなバイト長を提供しますcannot allocate memory

実際に接続しているデバイスによっては、ソフトウェアパッケージやより具体的なSCSIデバイスドライバ(テープドライブなど)を/dev/sg11調べる必要があるかもしれません。sg3_utilsst

sg utils で提供される有用なユーティリティコマンドの 1 つは、sg_mapsg デバイスに対応するマスターデバイスが何であるかを知らせることです。古代のLinuxシステムではない場合は、lsscsi/ dev / sgデバイスとマスターデバイスを含む素晴らしいSCSIデバイスのリストを提供するプログラムをインストールすることもできます。

sg_ddsg3_utilsには、低レベルのSCSIプロトコルを理解するバージョンも含まれています。dd(しかし、自分が何をしているのかを知っている場合にのみ使用してください!)

関連情報