我试图了解Xorg是如何工作的.
我创建了以下图像以显示我的理解(此图显示了按Ctrl Alt F7后组件的状态):
以下是图像的说明:
> / dev / tty7是Xorg的控制终端.
> Xorg直接与VGA驱动程序对话以在屏幕上绘图(它不会将要绘制的内容发送到TTY驱动程序).
> Xorg直接从键盘和鼠标驱动程序接收输入(它不接收来自TTY驱动程序的键盘和鼠标输入).
>虚拟终端还接收来自键盘驱动程序的输入(但根据我的测试,它接收密钥的扫描代码).
> X客户端(图像中的xterm和Firefox)没有控制终端.
我的理解是否正确?
解决方法:
您的描述与图表不完全匹配,并且比图表更正确.
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"
您可以通过读取/ dev / input / event2来查看我的X服务器从USB键盘获取输入.
对于输出,我不知道是否有类似的用户级工具. xrandr –listproviders列出正在使用或可用的图形驱动程序,但不列出/ dev条目.您可以使用lsof -p $(pgrep Xorg)或更少的/var/log/Xorg.0.log查看X服务器已打开的图形设备.
控制终端的概念是为文本模式会话而设计的. X服务器可能有也可能没有控制终端,具体取决于它的启动方式.从GUI菜单启动的X程序通常没有控制终端,因为窗口管理器没有控制终端.从终端中运行的shell启动的X程序确实将该终端作为控制终端.