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 memory하고 Function 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와 함께 제공되는 유용한 유틸리티 명령 중 하나는 sg_mapsg 장치에 해당하는 마스터 장치가 무엇인지 알려준다는 것입니다. 고대 Linux 시스템이 아닌 경우에는 lsscsi/dev/sg 장치 및 마스터 장치를 포함하여 멋진 SCSI 장치 목록을 제공하는 이 프로그램을 설치할 수도 있습니다 .

sg_ddsg3_utils에는 낮은 수준의 SCSI 프로토콜을 이해하는 버전 도 포함되어 있습니다 . dd(그러나 자신이 무엇을 하고 있는지 알고 있는 경우에만 사용하십시오!)

관련 정보