Devices
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
,我得到一個錯誤,當我增加 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 協議。(但只有在你知道自己在做什麼的情況下才使用它!)