进一步阅读

进一步阅读

Linux有7个虚拟控制台,对应7个设备文件/dev/tty[n]

虚拟控制台是否作为进程运行,就像终端模拟器一样? (我不确定。虚拟控制台似乎是内核的一部分,如果这是正确的,那么它不可能是一个进程。)

虚拟控制台是不是基于pseudoterminal实现的,就像终端模拟器一样? (我猜不是。否则,虚拟控制台的设备文件将是/dev/pts/[n], 而不是/dev/tty[n]

谢谢。

答案1

这是不正确的。

Linux 内核中内置了一个终端仿真器程序。它并不表现为具有打开文件句柄的正在运行的进程。它也不需要伪终端设备。它位于帧缓冲区和输入事件子系统之上,它使用内部内核接口来访问。它以 63 个(不是 7 个)的系列形式呈现给应用程序模式系统内核虚拟终端设备,/dev/tty1/dev/tty63.

用户空间虚拟终端是使用伪终端设备实现的。伪终端设备、内核虚拟终端设备和串口之上的真实终端设备是Linux中的三种终端设备(就应用程序而言)。

由于缺乏协调,Linux 文档现在在这个主题上相当糟糕。尽管有针对其他两种类型终端设备的页面,但一些 Linux 操作系统上多年来一直没有针对内核虚拟终端设备的手册页。该手册页将解释正确的设备编号及其设备文件名,并用于阅读:

一个Linux系统最多有63个虚拟控制台(主设备号为4,次设备号为1到63的字符设备),通常用1 <=来调用/dev/ttynn/dev/console<= 63。当前控制台也由或寻址/dev/tty0,该字符设备的主设备号为 4,次设备号为 0。

Debian 人员在 2014 年注意到 Debian 丢失了console(4) 个手册页,并转而安装 Linux Manpages 项目中的手册页,只是同一项目中的人们console在一年后又删除了他们的 (4) 个手册页。 2016 年,因为“Debian 及其衍生版本不安装此页面”和“Debian 不再携带它”。

进一步阅读

答案2

当有人说 Linux 中有 7 个虚拟控制台时,这是什么意思?他们的意思是只有 7 个可以通过快捷键访问吗?

从某种意义上说,它们是产生的/随时可用的。它曾是配置于/etc/inittab, 通过产卵多用户运行级别中的几个 (a)getty。

这一次我引用了派因getty.target送我去那里):

默认情况下,仅对 VT6 及以下的 VT 执行此自动生成(以便接近 Linux 系统的传统默认配置)1

一台 VT 通常用于 GUI - 可能有效,也可能无效。

systemd 做得更微妙,但结果是完全相同的。一种正交的感觉,尤其是当您使用箭头键翻阅 tty 时。

chvt 20让我进入一个空白的“终端”(默认的 systemd)——它首先需要一些 getty 来激活它。然后你就这样称呼它,或者把你的 Fn 键变成一个风琴。或者使用 Alt-箭头。

虚拟控制台是否作为进程运行

在某种程度上是的。它需要一个getty进程来打开一个ttyX。

 6314 tty2     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty2 linux
 6316 tty3     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty3 linux
 7408 tty5     Ss+    0:00 /sbin/agetty -o -p -- \u --noclear tty5 linux
 7453 pts/1    S+     0:00 grep getty

相关内容