如何找到连接到哪个物理设备/ dev/console?

use*_*358 14 tty linux-device-driver linux-kernel embedded-linux

有一个名为的设备文件/dev/console,其名称(major,minor)(5,1).当我使用串行控制台启动时,它会像我一样连接到我的UART端口/dev/ttyS0.但是当我禁用串行控制台启动时,/dev/console似乎连接到其他地方,/dev/ttyS0总是连接到同一个物理设备,即UART0.是否有任何迹象(如/proc或某些内容/sys)显示此类信息?我在那里试过但却找不到我想要的东西.我开始追踪Linux内核源代码以澄清它们之间的关系.任何人都可以给我一些提示吗?何时,何地,如何以及如何确定/dev/console连接的物理设备?

编辑:最新的发现是:

  1. /dev/console由配置console=内核参数,而这又是使用的getty打开stdin/stdout/stderr.如果未console=指定,/dev/null则打开为stdin/stdout/stderr.但我不确定它们是否完全相同/dev/console,这意味着/dev/console可以将其I/O连接到不同的物理设备.
  2. /dev/console如果USB HID键盘已插入console=且未配置为UART ,则可以读取.因此/dev/console== /dev/null似乎没什么意义.需要更多调查.

Dol*_*000 8

我认为/sys/devices/virtual/tty/console/active这就是你要找的东西.

  • FYI Linux 2.6.35没有该文件,一些较新的Linux系统拥有它. (3认同)
  • 在内核中,以console =初始化的最后一个模块配置为控制台.如果我理解正确,那么inittab用于配置将使用哪个tty终端来运行登录程序. (2认同)