다음 명령을 사용하려고 합니다.
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 memory
하고 Function not implemented
bs 크기를 늘리면 오류로 변합니다.
이 문제의 원인과 해결 방법은 무엇입니까?
업데이트: 때때로 그것은 나에게 알려주고 , 그런 다음 동일한 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_utils
st
sg utils와 함께 제공되는 유용한 유틸리티 명령 중 하나는 sg_map
sg 장치에 해당하는 마스터 장치가 무엇인지 알려준다는 것입니다. 고대 Linux 시스템이 아닌 경우에는 lsscsi
/dev/sg 장치 및 마스터 장치를 포함하여 멋진 SCSI 장치 목록을 제공하는 이 프로그램을 설치할 수도 있습니다 .
sg_dd
sg3_utils에는 낮은 수준의 SCSI 프로토콜을 이해하는 버전 도 포함되어 있습니다 . dd
(그러나 자신이 무엇을 하고 있는지 알고 있는 경우에만 사용하십시오!)