如何在Yocto Linux中禁用虚拟终端

3
有人知道如何在Linux中禁用虚拟终端吗?我正在使用i.MX6处理器上的Yocto Morty版本。尽管我们的基本发行版是Yocto,但不幸的是,我们已经偏离了使用配方构建它,因此这更像是一个关于Linux的问题而不是Yocto...
为了详细说明我的问题:这是一个嵌入式设备,具有HDMI端口 - 当我将终端连接到HDMI端口时,它显示Linux企鹅标志、getty服务,并在600秒后变为空白。我只想使用HDMI端口作为输出,不显示任何内容,并希望它一直保持开启。
我发现HDMI端口映射到/dev/tty1 - 当我键入:echo "asdfasdf" > /dev/tty1时,我可以看到字符输出到监视器上。
以下是我尝试过但均无效的几件事情 - 如果我能找出如何将其禁用为虚拟终端,则许多这些都是不需要的...
• 我找出如何禁用getty服务,但光标仍然闪烁。我甚至不想显示光标。

• 我已经尝试通过在内核配置参数中禁用LOGO来禁用企鹅的显示 - 我注释了任何带有LOGO的内容:

CONFIG_LOGO=y
CONFIG_LOGO_LINUX_MONO=y
CONFIG_LOGO_LINUX_VGA16=y
CONFIG_LOGO_LINUX_CLUT224=y

徒劳无功。标志仍然显示:。
• 在600秒后它变空白是控制台变空白-我可以看到在文件:/sys/module/kernel/parameters/consoleblank中将其设置为600。 当我发出命令:echo -e'\ 033 [9;0]'>/dev/tty1时,它将控制台变空白设置为0并唤醒终端。能够唤醒控制台是有限的成功但我想完全禁用虚拟终端...
• 我尝试注释掉配置文件中的任何虚拟终端定义,但无济于事:
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y

我所阅读的所有内容都表明/dev/tty1是一个虚拟终端或控制台。从我对VT选项的了解来看,禁用CONFIG_VT应该可以做到这一点:

VT - 虚拟终端 选择“是”以获取终端设备的支持,该设备具有显示器和键盘设备。这些被称为“虚拟”的原因是您可以在一个物理终端上运行多个虚拟终端(也称为虚拟控制台)。您至少需要一个虚拟终端设备才能使用键盘和监视器。因此,只有配置嵌入式系统的人想要在此处说“否”,以节省一些内存;这种情况下登录这样的系统的唯一方法是通过串行或网络连接。虚拟终端非常有用,因为例如,一个虚拟终端可以显示系统消息和警告,另一个可以用于文本模式用户会话,第三个可以运行X会话,所有这些都可以并行进行。在虚拟终端之间切换使用某些键组合,通常是Alt功能键。如果您不确定,请选择“是”,否则您将无法在Linux系统中做太多事情。

但出于某种原因它没有起作用!

• 我找到了这个帖子; https://askubuntu.com/questions/357039/how-do-i-disable-virtual-consoles-tty1-6 还有其他的,但是由于我的发行版没有提供这些解决方案中提供的目录或任何其他我找到的目录,所以它们都没有什么帮助。例如,我没有 /etc/events.d,也没有 /etc/default/console-setup 文件,也没有 /etc/init 目录... 我想这是因为我的发行版使用 systemd,而这些解决方案是基于 SysV 的 init,可能不适用于我的情况?

如果我能弄清楚如何将该端口禁用为终端,则无需禁用标志或控制台空白...

那么,有人有指针或我可以尝试的东西吗?我相对较新(10年后回归 - 我10年前使用过DNX v2.6,似乎我知道的关于init的一切都已经过时了lol),所以我肯定错过了很多东西...

谢谢, - Chuck

1个回答

4
我认为我找到了我的问题的答案。这实际上是一个帧缓冲控制台,文档在此处:Documentation/fb/fbcon.txt。根据文档:
帧缓冲控制台(fbcon)顾名思义,是运行在帧缓冲设备之上的文本控制台。它具有任何标准文本控制台驱动程序(例如VGA控制台)的功能,同时还具有可以归因于帧缓冲图形性质的附加功能。
在/arch/arm/configs中的配置文件中注释掉CONFIG_FRAMEBUFFER_CONSOLE=y这一行将禁用它。
此文档的这一部分还向您展示如何在运行时禁用它:
那么,我们如何从控制台解绑fbcon?部分答案在Documentation/console/console.txt中。总结一下:
将表示帧缓冲控制台驱动程序的值写入bind文件中。因此,假设vtcon1代表fbcon,则:
echo 1 > sys/class/vtconsole/vtcon1/bind-将帧缓冲控制台连接到控制台层 echo 0 > sys/class/vtconsole/vtcon1/bind-将帧缓冲控制台从控制台层分离
当我发出echo 0命令时,光标停止闪烁,当我发出echo 1命令时,光标开始闪烁。
我认为还有另一种方法,即通过在OpenEmbedded机器配置文件中放置USE_VT="0"来修改Yocto构建环境。 "USE_VT"变量由sysvinit-inittab配方引用。这个答案是从Yocto Linux邮件列表中给我的 - 但是由于我们已经分歧,我还没有测试过它...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接