Xorg가 어떻게 작동하는지 이해하려고 노력 중입니다.
이해를 보여주기 위해 다음 이미지를 만들었습니다(이미지는 Ctrl+Alt+F7을 누른 후의 구성 요소 상태를 보여줍니다).
이미지에 대한 설명은 다음과 같습니다.
/dev/tty7
Xorg의 제어 터미널입니다.- Xorg는 화면에 그리기 위해 VGA 드라이버와 직접 대화합니다(그리려는 내용을 TTY 드라이버로 보내지 않습니다).
- Xorg는 키보드 및 마우스 드라이버로부터 직접 입력을 받습니다(TTY 드라이버로부터 키보드 및 마우스 입력을 받지 않습니다).
- 가상 터미널은 또한 키보드 드라이버로부터 입력을 받습니다(그러나 제가 테스트한 결과 키 누름에 대한 스캔 코드를 받았습니다).
- X 클라이언트(그림의 xterm 및 Firefox)에는 제어 터미널이 없습니다.
내 이해가 맞나요?
답변1
귀하의 설명이 다이어그램과 일치하지 않으며 다이어그램보다 더 정확합니다.
X 서버는 입력 또는 출력에 tty 드라이버를 사용하지 않습니다. 다양한 입력 장치의 드라이버에서 직접 입력을 읽고 출력을 그래픽 카드 드라이버로 직접 보냅니다.
입력 장치를 나열한 xinput
다음 추가 정보를 얻는 데 사용할 수 있습니다 xinput list-props
. 예를 들어:
$ xinput | tail -n 1
↳ USB Keyboard id=10 [slave keyboard (3)]
$ xinput list-props 10 | tail -n 1
Device Node (263): "/dev/input/event2"
를 읽으면 내 X 서버가 USB 키보드에서 입력을 받는 것을 볼 수 있습니다 /dev/input/event2
.
출력의 경우 비슷한 사용자 수준 도구가 있는지 모르겠습니다. xrandr --listproviders
사용 중이거나 사용 가능한 그래픽 드라이버를 나열하지만 /dev
항목은 나열하지 않습니다. lsof -p$(pgrep Xorg)
또는 를 사용하여 X 서버가 어떤 그래픽 장치를 열었는지 확인할 수 있습니다 less /var/log/Xorg.0.log
.
제어 터미널 개념은 텍스트 모드 대화를 위해 설계되었습니다. X 서버는 시작된 방법에 따라 제어 터미널을 가질 수도 있고 없을 수도 있습니다. GUI 메뉴에서 실행되는 X 프로그램에는 일반적으로 제어 터미널이 없습니다. 창 관리자에는 제어 터미널이 없기 때문입니다. 터미널에서 실행되는 쉘에서 시작된 X 프로그램은 해당 터미널을 제어 터미널로 사용합니다.