Linux에서 X 서버는 특정 tty(예: tty7)와의 관계를 어떻게 설정하여 해당 tty가 전경에 있을 때만 X 서버가 입력을 받고 화면에 그릴 수 있도록 합니까? 이는 어떻게 시행되나요?
(이전에는 Stack Overflow에 아래 양식으로 이 질문을 게시했는데, 해당 페이지는 닫혀 있었습니다.)
"X 서버는 /dev/tty7에서 실행됩니다"라는 말이 무슨 뜻인지에 대해 몇 가지 질문이 있습니다. 나는 그것이 어떻게 작동하는지에 대해 몇 가지 추측을 했고, 누군가가 다음 진술이 참인지 거짓인지 말해 줄 수 있기를 바랍니다.
- /dev/tty7은 일반적으로 Xorg의 제어 터미널입니다.
- tty7은 Xorg의 제어 터미널이지만 의미 있는 방식으로 Xorg를 "제어"하지는 않습니다.
- Xorg는 /dev/tty7에서 읽는 것이 아니라 /dev/input/... 또는 이와 유사한 것을 폴링하여 직접 키보드 및 마우스 입력을 받습니다. 그럼에도 불구하고 /dev/tty7은 키 입력도 수신합니다. 예를 들어 터미널 에뮬레이터에서 "xxd -p /dev/tty7"을 실행하면 이를 확인할 수 있습니다.
- Xorg는 /dev/tty7에 쓰는 것이 아니라 드라이버가 생성하는 일부 장치 파일이나 I/O 매핑된 메모리 영역과 같은 일부 하드웨어 특정 인터페이스를 사용하여 화면에 그립니다.
- Xorg가 비디오 모드를 설정하면 tty 드라이버는 자동으로 화면 그리기를 중지합니다. 이것이 바로 키를 누르거나 /dev/tty7에 문자열을 에코할 때 화면에 표시되지 않는 이유입니다.
- Xorg는 tty7이 백그라운드에 있을 때에도 /dev/events를 통해 키보드 및 마우스 입력을 받지만, tty7이 포그라운드에 있지 않으면 이를 무시합니다.
- Xorg가 화면에 그리는 것은 무엇이든 tty7이 전경에 있을 때만 모니터에 표시됩니다.
- Xorg가 비디오를 초기화할 때(비디오 모드 설정 등), 설정이 다른 터미널이 아닌 tty7에 적용되는 것은 tty7이 포그라운드에 있기 때문입니다.