首页 > 解决方案 > 谁在 linux 内核中调用 tty_open()?

问题描述

对于鼠标、键盘和操纵杆驱动程序,它可能会调用“打开”然后使用这些驱动程序。

(当我在 VirtualBox 中检查 CentOS 7(仅限文本模式)时,执行 lsof /dev/input/event2 (键盘)后我没有看到 X,但我的键盘仍在工作)

tty_open() 怎么样?

根据调用跟踪,我们可以大致知道顺序:(至少,我们知道有人叫 'sys_open' ) https://bugzilla.redhat.com/show_bug.cgi?id=630464

但是,我还是不知道谁叫'开'?

标签: clinuxkerneldrivertty

解决方案


当我在 VirtualBox 中检查 CentOS 7,仅文本模式时,执行 lsof /dev/input/event2 (键盘)后我没有看到 X,但我的键盘仍然有效

那是因为您使用虚拟控制台,然后是/dev/ttyN设备之一。这些直接连接到内核本身内部的 Linux 输入事件子系统(通过vt模块);基本上所有类似键盘的设备都充当当前活动虚拟终端的输入。

X 本身使用一个虚拟控制台,以便内核可以在它和任何基于文本的虚拟控制台之间切换。

怎么样tty_open()

如果您运行sudo lsof /dev/tty[0-9],您可以看到哪些进程正在访问虚拟控制台。

名称中带有的进程getty是提供登录终端的进程。(与串行终端一起使用的非常相似;事实上,许多 getty 程序可以很好地处理虚拟控制台和串行终端。)当您登录时,getty 启动login(程序!),然后启动默认为该用户定义的 shell(请参阅getent passwd username;它是最后一个字段,并且必须是/etc/shells允许的字段)。

Ctrl内核本身支持通过++切换到不同的虚拟控制台(F1 用于 tty1,F2 用于 tty2,依此类推)AltFn如果您使用合适的图形驱动程序,您甚至可以在 Xorg 和虚拟控制台之间切换。(通常,Xorg 在 tty6 或 tty7 上运行,但这因发行版而异。)Ctrl+ Alt+←</kbd> and Ctrl+Alt+→</kbd> can also usually be used to switch to the previous or next virtual console.


推荐阅读