如何实时更改 TTY 行和列?

如何实时更改 TTY 行和列?

这是一个关于在名为 Compulab 设备上运行的 Linux 的问题 实用专业版,但我认为在这里问这个问题以解决任何平台的问题都是值得的(如果可能的话)。

我曾经与间谍, 一个完美的遥控计划为TTY 文本模式控制台。
如果我启动我的 Utilite乌班图12.04HDMI 电缆已连接在我的 720p 主屏幕上,我可以远程连接到任何 TTY,例如第一个 TTY:

# conspy 1

但如果我断开电缆并重新启动:

luis@utilite-desktop:~$ sudo conspy 1
conspy: screen too large.  I only handle up to 200x80.

看来分辨率高达 1080p,因此 TTY 文本模式下的列/行太大,ConSpy 无法管理它们。

与 Kali v1.0.9 的结果相同。

根据我所读到的内容,Linux 在更改文本模式分辨率方面似乎存在严重问题(令人难以置信,但这是事实)。
我发现的所有方法都需要GRUB 修改,但 Utilite 使用U盘启动而不是 GRUB,而且它对我来说太神秘了,无法管理(永远不要谈论将数据保存到闪存的风险)。

有没有吗更改 TTY 的更简单方法文本分辨率(即:行和列)?

我努力了:

# nano /etc/rc.local

...然后添加:

stty cols 83 rows 40

但结果保持不变。

答案1

目前还不清楚文本缓冲区的尺寸是多少太大了对于 ConSpy(stty --all或未提供),因此有关文本行数和 cpl 的建议如下。

TUI 控制台有不同的参数:

  • 视频模式(即多少条扫描线×屏幕宽度(以点为单位));
  • 多少字符框是否存在(即文本行 × cpl)。

一般情况下:
   文本行数 = 扫描线数 / 字符高度
   cpl = 屏幕宽度(以点为单位) / 字符宽度
字符高度和宽度以点为单位。除法是整数,余数被舍去。

要减少文本行数,请加载字符高度更大的字体。要减少 cpl(每行字符数),请加载字符宽度为 12 或更大的字体。例如:

 setfont /usr/share/consolefonts/Uni3-TerminusBold24x12.psf.gz

(尽管恕我直言,终点站在很多方面都很丑陋)。

在 Ubuntu 上,/etc/init/console-setup.conf可以创建一个自定义脚本,以便在启动时执行。即,代替

exec loadkeys /etc/console-setup/cached.kmap.gz

有人可能会写

script
    setfont /usr/share/consolefonts/Uni3-TerminusBold24x12.psf.gz
    loadkeys /etc/console-setup/cached.kmap.gz
end script

请注意,cached.kmap.gz 是(键盘映射)并且不干扰字体。无需setfont从“console-setup.conf”执行。因为“控制台”一词的含义这个选择似乎合乎逻辑。
更新:/etc/init/console-font.confUbuntu 中有任务。

或者阅读Ask Ubuntu 上的这些东西,也许会找到有用的东西。

上面的大多数建议都假设帧缓冲区 ( fbdev) 驱动程序已启用。此外,在这种情况下,fbset不带参数的命令(或sudo fbset来自用户 shell)报告当前视频模式的几何形状,如下所示:
   geometry 屏幕宽度 扫描行数……

类似硬件 VGA 模式,在现代 Linux 中已过时,最大字符宽度为 9。因此,只能通过启用非标准(减小的)屏幕宽度来减少 cpl(每行字符数),从而降低像素时钟频率的非标准模式。这并不总是可行且安全的。


关于 Linux 虚拟控制台上的文本行 × cpl 的另一项注释。这些值可以通过以下方式获得
sudo od -t u1 -N 2 /dev/vcsa数字
第一个十进制数是文本行,第二个是 cpl。有关其工作原理的说明,请参阅 vcs(4) 和 od(1)。

相关内容