Devices

dd 輸出:嘗試寫入 /dev/sg11 時出現“功能未實現”

  • July 22, 2013

我正在嘗試使用以下命令:

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,我得到一個錯誤,當我增加 bs 大小時cannot allocate memory它變成一個錯誤。Function not implemented

是什麼導致了這個問題,我該如何解決?

更新:有時它會告訴我cannot allocate memory,然後它會再次告訴我function not implemented相同的 bs 值。

/dev/sgxx是一種 SCSI 通用設備,它允許發送和接收原始 SCSI 命令。當您寫入設備時,您應該使用 SCSI 標頭開始寫入,該標頭定義了您希望執行的操作。

將隨機數據寫入sg設備確實是個壞主意。您將發送隨機 SCSI 命令,這些命令甚至可能不存在(因此function not implemented),並且還為操作提供隨機字節長度,這很可能導致cannot allocate memory. (如果你真的不走運,隨機命令可能會做一些事情。)

根據您實際連接到的設備/dev/sg11,您可能需要調查sg3_utils軟體包,或者一些更具體的 SCSI 設備驅動程序,例如st(磁帶驅動器)。

sg utils 附帶的有用的實用程序命令之一是sg_map,它可以讓您知道 sg 設備對應的主要設備是什麼。在非古代 Linux 系統上,您還可以安裝lsscsi它,它提供了一個很好的 SCSI 設備列表,同樣包括 /dev/sg 設備和主設備。

sg3_utils 還包括sg_dd哪個版本dd可以理解低級 SCSI 協議。(但只有在你知道自己在做什麼的情況下才使用它!)

引用自:https://unix.stackexchange.com/questions/84001