내 Archlinux에서는 /dev/pts
devpts에 의해 마운트되는데, /dev/pts/ptmx
장치 노드를 만든 사람은 누구입니까? 이 노드의 목적은 무엇입니까? 동일한(Major=5 Minor=2) 장치 노드이지만 /dev/ptmx/
액세스 모드가 다릅니다. 무엇을 위한 것입니까?
답변1
기존 AT&T 시스템 5 의사 터미널 슬레이브 장치 메커니즘은 평범하다는 것입니다지속성 있는아래의 문자 장치 노드 /dev
. 멀티플렉서가 있다주인장비 /dev/ptmx
. 이전 4.3BSD 의사 터미널 장치 메커니즘에는 병렬 공통이 있었습니다.지속성 있는아래의 마스터 및 슬레이브 장치 노드입니다 /dev
. 이는 일반 디스크 파일 시스템의 특수 장치 노드입니다.
OpenBSD에서는 이 중 일부가 여전히 적용됩니다. /dev
여전히 디스크 볼륨이고 슬레이브 장치는 여전히 실제 디스크 노드입니다. 그러나 필요에 따라 생성됩니다. PTMGET
I/O 제어가 장치에 실행 되면 커널은 내부적으로 관련 호출을 실행하여 새 장치 노드를 생성합니다 /dev/ptm
.
FreeBSD에서는 이것이 더 이상 사실이 아닙니다. 더 이상 멀티플렉서 장치도 없습니다. /dev
CD 볼륨이 전혀 아닙니다. 파일 시스템 입니다 devfs
. 슬레이브 장치는 시스템 호출에 대한 응답으로 devfs
해당 디렉토리 pts/
아래의 파일 시스템 에 나타납니다. 이는 일부 "멀티플렉서" 장치의 열린 파일 설명자를 둘러싸는 posix_openpt()
것이 아니라 완전한 시스템 호출입니다 .ioctl()
한동안 Linux에서는 의사 터미널 슬레이브 장치가 영구 장치 노드였습니다. 당신이 보고 있는 것은 "새로운" devpts
파일 시스템(여기서 "새로운"은 몇 년 전에 도입되었음을 의미함)과 devtmpfs
.거의FreeBSD에서 사용이 허용됩니다 devfs
.
그러나 몇 가지 차이점이 있습니다. 특히 "멀티플렉서" 장치가 있습니다.
- 내부에나이가 많은자동으로 생성/파기된 슬레이브 장치 파일만 포함하는 다른 파일 시스템 의 장치 인 "새"
devpts
시스템입니다 . 관례대로, 설정에는 마운트가 준비되어 있습니다.ptmx
devtmpfs
devpts
/dev/ptmx
devpts
/dev/pts
- 하지만 Linux 사람들은 갖고 싶어합니다.다중 완전 독립컨테이너 등에 사용되는 파일 시스템 인스턴스
devpts
. 존재하는 경우 두 파일 시스템을 (올바르게) 동기화하는 것이 매우 어렵습니다.많은devtmpfs
그리고devpts
파일 시스템. 그래서최신"새"devpts
시스템의 모든 장치(멀티플렉서 및 슬레이브)는 동일한 파일 시스템에 있습니다.ptmx
이전 버전과의 호환성을 위해 새ptmxmode
마운트 옵션을 설정 하지 않으면 기본적으로 새 노드에 액세스할 수 없습니다 . 이전 버전과의 호환성 모드에서 사람들은 여전히 이전 단일 인스턴스 방식으로 작업을 실행할 수 있으며 이는newinstance
설치 되지 않는 한 기본적으로 수행됩니다devpts
. - 내부에심지어 업데이트됨파일 시스템의 "새로운"
devpts
(2016년부터 이미 존재함)devpts
인스턴스별 다중화기 장치는 이제 기본 다중화기이며 심볼릭 링크, 바인딩 설치 또는 일반 이전 버전을 에뮬레이션하려고 시도하는 커널에서 제공하는 심ptmx
입니다 .devtmpfs
실제에 대한 심볼릭 링크pts/ptmx
. 현재 다중 인스턴스 접근 방식은 다음과 같습니다.오직방법.
추가 읽기
- https://unix.stackexchange.com/a/470853/5132
- 이 glibc 문제를 해결하는 가장 좋은 방법은 무엇입니까?
- https://unix.stackexchange.com/a/214685/5132
Documentation/filesystems/devpts.txt
. 리눅스 커널.- 다니엘 벨랑쉬(2009-05-20).
/dev/pts
컨테이너의 보안 문제를 방지하려면 "newinstance" 마운트 플래그를 사용해야 합니다.. Red Hat 버그 #501718. - 에릭 비더만(2015-12-11). devpts: 현명한 /dev/ptmx 및 새 인스턴스 강제 실행. 리눅스 커널 메일링 리스트.
- 에릭 비더만(2016-04-08). devpts: 경로 조회를 통해 연관된 devpt를 찾도록 /dev/ptmx에 교육합니다.. 리눅스 커널 메일링 리스트.