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

时间:2017-12-14 22:12:58

标签: linux terminal console yocto systemd

有谁知道如何禁用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秒后空白的事实是控制台消隐 - 我可以在文件中看到它设置为600:/ sys / module / kernel / parameters / consoleblank。当我发出命令时: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-function键。如果你不确定,说是,或   否则你将无法在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年后回归 - 我在DNX工作10年前的v2.6,似乎我所知道的关于init的所有内容都相当过时了),因此我确信我错过了很多...

谢谢, - 查克

1 个答案:

答案 0 :(得分:1)

我想我找到了问题的答案。这实际上是这里记录的帧缓冲控制台:Documentation / fb / fbcon.txt。来自文档:

  

如同名称所示,帧缓冲控制台(fbcon)是一个文本   控制台在framebuffer设备上运行。它有   任何标准文本控制台驱动程序的功能,例如VGA   控制台,具有可归因于的附加功能   帧缓冲的图形性质。

评论该行

CONFIG_FRAMEBUFFER_CONSOLE = Y

在位于/ arch / arm / configs的配置文件中将禁用它。

此文档的这一部分还向您展示了如何在运行时禁用它:

  

那么,我们如何从控制台取消绑定fbcon?部分答案在于   文档/控制台/ console.txt。总结一下:

     

将值传递给表示帧缓冲控制台的绑定文件   驱动程序。所以假设vtcon1代表fbcon,那么:

     

echo 1> sys / class / vtconsole / vtcon1 / bind - 附加framebuffer控制台   至                                              控制台层回波0> sys / class / vtconsole / vtcon1 / bind - 从中​​分离帧缓冲控制台                                              控制台层

当我发出echo 0命令时,当我发出echo 1命令时,光标停止闪烁并再次开始闪烁。

我认为还有另一种方法可以通过在OpenEmbedded机器配置文件中放置USE_VT =“0”来修改Yocto构建环境。 sysvinit-inittab配方引用“USE_VT”变量。这个答案是从Yocto Linux邮件列表中给我的 - 但是我没有测试过,因为我们已经从Yocto分歧了......