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/ttyn
n/dev/console
<= 63。当前控制台也由或寻址/dev/tty0
,该字符设备的主设备号为 4,次设备号为 0。
Debian 人员在 2014 年注意到 Debian 丢失了console
(4) 个手册页,并转而安装 Linux Manpages 项目中的手册页,只是同一项目中的人们console
在一年后又删除了他们的 (4) 个手册页。 2016 年,因为“Debian 及其衍生版本不安装此页面”和“Debian 不再携带它”。
进一步阅读
- https://unix.stackexchange.com/a/177209/5132
- https://unix.stackexchange.com/a/333922/5132
- Linux:/dev/console、/dev/tty 和 /dev/tty0 之间的区别
- >12 的 TTY 有何用途?
ttyS
。Linux 程序员手册。迈克尔·克里克。 1992 年 12 月 19 日。pty
。Linux 程序员手册。迈克尔·克里克。 2017年9月15日。- https://dyn.manpages.debian.org/jessie/manpages/console.4.html
- https://dyn.manpages.debian.org/stretch/manpages/console.4.html
- https://dyn.manpages.debian.org/testing/manpages/console.4.html
- http://manpages.ubuntu.com/manpages/trusty/en/man4/console.4.html
- http://manpages.ubuntu.com/manpages/artful/en/man4/console.4.html
- http://manpages.ubuntu.com/manpages/bionic/en/man4/console.4.html
- http://manpages.ubuntu.com/manpages/cosmic/en/man4/console.4.html
- 文森特·勒费弗 (2014-12-27)。手册页:一些手册页引用了
console
(4),但该手册已不存在。 Debian 错误#774022。 - Tobias Quathamer 博士 (2016-01-05)。 ”
console.4
:现在包含在这个包中。 (关闭:#774022)”。 联机帮助页 4.04-0.1。变更日志。 - 马尔科·米利宁 (2016-01-07)。
console
(4) 已过时。内核错误#110481。 - 迈克尔·克里克 (2016-03-15)。 ”
console.4
: 删除过时的页面”。手册页。 kernel.org。 - 乔纳森·德博因·波拉德 (2016)。 ”终端”。 小吃指南。软件。
- 乔纳森·德博因·波拉德 (2018)。Linux 内核虚拟终端设备的手册页。提案。
答案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