이러한 장치 노드를 열 수 없는 이유는 무엇입니까?

이러한 장치 노드를 열 수 없는 이유는 무엇입니까?
[root@archlinux xtricman]# ls -l /dev/pts
total 0
crw--w---- 1 xtricman tty  136, 0 Feb 24 19:24 0
c--------- 1 root     root   5, 2 Feb 24 19:10 ptmx
[root@archlinux xtricman]# ls -l /mnt
total 12
brw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node
crw-r--r-- 1 root root 136, 0 Feb 24 19:17 dev_node_c
drwx------ 2 root root  12288 Feb 24 19:12 lost+found
[root@archlinux xtricman]# exec 6<>/dev/pts/0
[root@archlinux xtricman]# exec 7<>/mnt/dev_node
bash: /mnt/dev_node: No such device or address
[root@archlinux xtricman]# exec 7<>/mnt/dev_node_c
bash: /mnt/dev_node_c: Input/output error

/dev/ptsdevpts의 마운트 지점 /mnt이자 ext4의 마운트 지점입니다.

/dev/pts/0세 개의 장치 노드( , /mnt/dev_node, ) /mnt/dev_node_c의 주 장치 번호와 부 장치 번호가 동일한데 왜 하나만 열 수 있고 /dev/pts/0나머지 두 개는 열 수 없는지 알고 싶습니다 .

(major=136,minor=0)에 대한 블록 장치가 존재하지 않는 것은 알지만, 문자 장치(major=136,minor=0)에 대한 "입/출력 오류"는 무엇을 의미합니까? 이 오류가 발생하는 이유는 무엇입니까?

답변1

글쎄, dev_node그것은 블록 장치이므로( b출력의 줄 시작 부분에 ls나와 있음) 다른 장치와 완전히 다릅니다. 단지 동일한 메이저 번호를 가지고 있을 뿐 블록 번호와 문자 장치 번호 사이에는 상관 관계가 없습니다.

Documentation/admin-guide/devices.txt이에 대한 내용은 Linux 커널 소스 코드에 설명되어 있습니다.

 136 block      Mylex DAC960 PCI RAID controller; ninth controller
                  0 = /dev/rd/c8d0      First disk, whole disk

아마도 Mylex RAID 컨트롤러가 없을 수도 있습니다.아홉그들에게는 이것이 No such device or address적절한 대응처럼 보였습니다.

dev_node_c당신과 똑같아 보이지만 /dev/pts/0. 그러나 장치 노드는 /dev/pts자동으로 생성되며 특별한 가상 파일 시스템( devpts)을 갖습니다. 평소와 같이 다음 출력에 표시됩니다 mount.

devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) 

이것을 테스트했는데 실제로 거기에서 /dev/pts/15다른 파일 시스템으로 장치 노드를 복사하는 것이 작동하지 않습니다. 또한 다른 복사본을 설치하면 다른 복사본에는 표시되지 않는 devptspseudo-tty를 사용하여 깨끗한 인스턴스가 생성되는 것 같습니다 . /dev/pts따라서 의사 tty 노드가 devpts파일 시스템의 특정 인스턴스와 연결되어 노드가 외부에서 작동하지 않는 것이 실제로 가능합니다.

관련 정보