控制台中有 256 种颜色 (tty)

Mar*_*ter 13 colors tty console linux-kernel

假设,我有一个没有X server. 我只能从控制台登录。看来,默认情况下 linux 控制台仅支持 8 种颜色:

# tput colors
8
Run Code Online (Sandbox Code Playgroud)

是否可以在控制台中使用 256 种颜色,就像我在终端仿真器(即终结器)中使用的一样?

在谷歌搜索时,我发现了许多类似的问题(其中许多已经超过 10 年),但没有明确的答案。有人建议使用帧缓冲区,其他人建议将 TERM 参数附加到内核引导选项。

目前,我只传递一个额外的选项作为内核启动参数:

append="video=1280x720"
Run Code Online (Sandbox Code Playgroud)

我相信传递视频分辨率仅适用于kernel mode setting支持的现代内核,但我不确定。

是否可以在现代 linux 控制台 (tty) 中使用 256 种颜色

如何?

我正在使用内核 4.1 的 Debian Wheezy

更新:

根据@muru 的建议,我尝试了fbterm. 虽然它可以使用 256 种颜色,但它的字体非常难看/乱码。此外,左下角有一个不断闪烁的光标,我觉得这很分散注意力。

我可以在没有 fbterm/framebuffer 的情况下在控制台中使用 256 色吗?

控制台中的 8 色限制从何而来?

Tho*_*key 4

实际问题由这两项组成:

  • 我可以在没有 fbterm/framebuffer 的情况下在控制台中使用 256 色吗?

  • 控制台中的 8 种颜色限制从何而来?

对于第一个问题:显然不是。所有建议的方法都使用 fbterm。对于第二个:它来自终端描述(又名“terminfo 条目”)。对于 Linux 控制台,TERM设置为linux,表示终端支持 8 种颜色。 tput从终端数据库获取其信息。

引用的线程中的一项内容说 fbterm 使用与 xterm 不同的转义序列来设置颜色。如果是这种情况(并且考虑到 Emacs 用户对事物进行硬编码的倾向),则 fbterm 没有合适的终端条目。

  • 当然 - 您可能没有阅读签入评论:*由于 VGA 控制台的硬件限制,颜色***降级***至 16 种前景和 8 种背景。在 fbdev 控制台上,可以在不损失质量的情况下支持它们,但添加它需要相当大量的代码。* (2认同)