Linux에서 X 서버가 특정 tty(예: tty7)와 관계를 설정하여 해당 tty가 전경에 있을 때만 X 서버가 입력을 받고 화면에 그릴 수 있도록 하려면 어떻게 해야 합니까? 이것은 어떻게 수행됩니까?
(이전에 이 질문을 아래 양식으로 스택 오버플로에 게시했는데, 이후 폐쇄되었습니다.)
누군가 "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에 적용됩니다.