Moo*_*eep 5 linux serial-port console serial-console
要在 Linux 上启用串行控制台,可以使用getty
(最常见的是它的变体agetty
)。该二进制文件将用于初始化TERM变量的值作为参数。
在 Debian 上,使用 Sys V init,默认值为 vt100。在 systemd 中,默认值曾经是vt102,现在是vt220。
在玩了一些 QEMU 虚拟机和virt-viewer
,以及virsh console
命令之后,我注意到了一些事情:
ls --color
显示颜色,但vim
语法高亮不起作用ls
,并vim
使用颜色所以我想独立于实际的“颜色支持”,每个应用程序都会查看TERM变量并相应地采取行动,这将解释上述差异。
阅读Serial Console HOWTO 后,我了解到TERM变量的值应取决于将连接到串行端口的物理终端的实际型号,根据其功能。
请注意,根据Lennart Poettering 的博客,TERM应仅使用真实虚拟终端(而不是串行终端)设置为linux。另一方面,Arch Linux 的 Wiki似乎并不介意(请参阅/etc/inittab
它建议的行)。
所以我的问题是:
在一般情况下,如果在连接到功能较弱的终端(如 DEC VT100、VT102 或 VT220)或某些 RS-232 软件终端仿真器(如或 )的控制台上将TERM变量设置为linux会发生什么?minicom
termite
更现实地(在我的特定情况下),在 QEMU VM 上的“虚拟”串行控制台中将TERM变量设置为linux 是否可以,我将通过virt-viewer
或连接到它virsh console
?
该TERM
设置告诉应用程序与之通信的终端具有哪些功能,以及如何利用这些功能(通常通过 ncurses 等库)。用简单的英语来说:它告诉我们应该发送什么控制序列(转义序列)来在屏幕上移动光标、更改文本颜色、如何删除屏幕区域、功能键发送什么序列等。这些功能可能会缺失,例如颜色支持。
当今使用的大多数终端类型都与“玻璃终端”的“祖父”DEC VT100 有关。这就是为什么终端类型大多是可以互换的,因此设置错误的类型通常会导致大部分工作设置正常,但会出现一些故障。
那么,要回答“我应该使用哪个”和“如果我使用错误的设置会发生什么”的问题呢?一些控制序列可能不匹配,即程序发送的光标移动序列与终端仿真器期望的不同。或者缺少颜色支持。(顺便说一句,原来的 VT100 肯定不支持颜色...)正确的设置应该由终端仿真器文档提供,但是尝试看看哪种设置效果最好是没有坏处的。如果“linux”适合你,就可以使用它。