framebuffer、VT和tty之间有什么关系?

10

我正在学习 Ctrl+Alt+F1~F7 背后的机制。

我找到一些介绍帧缓冲、VT 和 tty 的资料。我知道帧缓冲是图形卡操作的一种抽象,tty(和 pts)是程序与之交互的一些东西。我也发现有些人在谈论 VT(虚拟终端),但我不知道它们之间的关系。

在网上搜索后,我画了一幅图。

figure

我认为一个 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 服务器并不使用帧缓冲,那它使用的是什么呢?请告诉我我的理解哪里出错了。
1个回答

1
  1. tty和pty都是终端,但有一点小区别。pty是伪终端。打开终端输入tty会返回pts终端。tty通常是物理终端,如果你使用过嵌入式Linux,你可以将Linux控制台重定向到不同的tty上,这些tty是uart终端。如果你使用9针uart电缆,那么你可以使用ttyX。
  2. vcs是在X服务器之前使用的不同屏幕,或者现在在没有安装X服务器(甚至是Wayland服务器)的服务器中使用。在运行级别3和5中,尝试使用CTRL + ALT + F3访问/dev/vc3。你可以使用echo和cat命令。

  3. 帧缓冲是图形子系统的一部分,不应该与cat命令一起使用。它是矩阵,是任何连接的屏幕的抽象。用于图形驱动程序和应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接