我正在学习 Ctrl+Alt+F1~F7 背后的机制。
我找到一些介绍帧缓冲、VT 和 tty 的资料。我知道帧缓冲是图形卡操作的一种抽象,tty(和 pts)是程序与之交互的一些东西。我也发现有些人在谈论 VT(虚拟终端),但我不知道它们之间的关系。
在网上搜索后,我画了一幅图。
我认为一个 VT 是一个显示器和键盘的集合。如果我想在一个集合(一个 VT)中使用多个 tty,我必须在它们之间切换,因为我只有一个监视器来显示它们。这就是 VT 切换。但是 VT 到底是什么?是驱动程序、模块还是其他什么东西?
我猜想,如果我有两组显示器和键盘连接到我的计算机,我可以将它们分组成两个 VT。我可以在显示器 1 上显示我的 tty1,并使用键盘 1 进行控制,在显示器 2 上显示 tty2 并使用键盘 2 进行控制。我也可以在两个 VT 中进行 VT 切换。这是真的吗?
而且,我认为我可以将帧缓冲(fbcon + fbdev)视为图形卡驱动程序,但它是为控制台而设计的,并非用于通用目的(专有驱动程序)。
此外,在 /dev 下有一些特殊的文件。
/dev/tty*
和 /dev/pts/*
是 tty 用的
echo
可以将输入发送到 tty,而 cat
可以从 tty 接收输出。
/dev/vcs*
是 VT 屏幕用的
cat
可以获取屏幕中的文本,但在 X 下使用时得到的全是零(不是空的)。
/dev/fb*
是帧缓冲用的
cat
能够获取屏幕上的整个像素,但在 X 环境下使用时会得到全零值(而非空值)。我听说 X 服务器并不使用帧缓冲,那它使用的是什么呢?请告诉我我的理解哪里出错了。