sysfs에서 /dev 항목을 생성할 수 없습니다. 해당 장치나 주소가 없습니다.

sysfs에서 /dev 항목을 생성할 수 없습니다. 해당 장치나 주소가 없습니다.

나는 이전 버전의 Linux 2.6을 실행하는 일종의 홈 엔터테인먼트 시스템을 가지고 있습니다. SATA > USB 브리지 시스템과 여러 개의 USB 포트가 있습니다. 제가 하고 싶은 것은 네트워크 연결 스토리지로 사용하는 것입니다.

이제 운 좋게도 개방적이고 액세스 가능한 텔넷 서버가 실행되고 있습니다.

문제는 커널이나 초기화 시스템이 어디에 있는지 찾을 수 없다는 것입니다. 상자가 BusyBox를 실행 중입니다.

이 보드에는 플래시 메모리 칩이 있습니다. 그러나 block/의 sysfs 아래에는 여러 개의 플래시 칩이 있습니다.

/sys/block # ls
...
mtdblock0  mtdblock2  mtdblock4
mtdblock1  mtdblock3

그런데 왜 이런가요?

/dev이제 USB 플래시 드라이브에 덤프하고 분석할 수 있도록 항목을 만들고 싶습니다 .

그래서 나는 이렇게 했습니다:

/sys/block # cat /sys/block/mtdblock0/dev
31:0

그리고..

mknod /dev/mtdblock0 c 31 0

0으로 종료한 다음 원시 데이터를 읽어 장치를 테스트해 보았습니다.

/sys/block # cat /dev/mtdblock0 
cat: /dev/mtdblock0: No such device or address

왜 그런 겁니까? dd도 똑같은 말을 하더군요. 항목이 있습니다 /proc/devices:

/sys/block # cat /proc/devices 
Character devices:
  1 mem

{ ... }

Block devices:
  1 ramdisk
  7 loop
  8 sd
 31 mtdblock

{ ... }

답변1

mknod /dev/mtdblock031 0

캐릭터 장치를 만듭니다. 당신은 블록 장치를 원합니다. 따라서 명령에서 b대신 사용하십시오.cmknod

블록 장치 번호와 문자 장치 번호는 독립적입니다. 블록디바이스 31:0은 캐릭터디바이스 31:0과 아무런 관련이 없습니다. 커널에 문자 장치 31:0용 드라이버가 없으므로 "해당 장치 또는 주소가 없습니다" 오류가 발생합니다.

관련 정보