Linux 是否缓存硬件信息?

Linux 是否缓存硬件信息?

问题

Linux 是否在引导之间存储硬件信息? (例如 EDID)

如果是这样,是否可以配置缓存的内容?


背景

我问的原因是我目前正在尝试配置第二台显示器,并且该显示器有一个 VGA(显示器)到显示端口(显卡)无源转换器(我知道这是一个坏主意,而且不是我自己的) 。据我了解,使用无源转换器需要显卡做一些工作才能将信号正确地发送到显示器。

我可以让显示器工作,但是如果我硬关闭显示器或计算机,一旦重新打开,它将停止工作。到目前为止,我的解决方案非常成功,从显卡上拔下显示端口,重新启动机器,重新插入显示端口,再次重新启动,它就可以正常工作。然而,这是相当乏味的,因为我有很多具有这种配置的计算机。

关闭/打开电源并再次工作后,第二个显示器具有不同的 EDID。


想法

我的第一预感是显卡正在从显示器接收一些信息,并由于无源适配器而做一些额外的工作来生成最终的 EDID。由于卡执行此工作,因此 EDID 在电源周期之间不一致。

我的第二个预感是 Linux(特别是 RHEL 7.0)会缓存硬件信息(因为它通常是静态的),当缓存的 EDID 和当前 EDID 冲突时,监视器将不再工作。

我的解决方法证实了这一点,因为拔掉显示器并启动将是一个足够重大的更改,足以再次检测硬件(显示端口中没有硬件),然后插入显示端口并启动将导致显示被处理作为新硬件并从新检测到。这个解决方法基本上看起来像是一种刷新该显示缓存的方法。

答案1

我认为 EDID 数据不会缓存在任何地方,但您可以尝试sudo ddccontrol -p看看是否可以随时通过 VGA 电缆中的 i2c 总线读取它。看文档

另外,还可以用来xrandr控制您的显示器。它应该列出您的显卡的哪些端口已连接到它们,并允许您使用它们的设置。

默认情况下,Xorg服务器在启动时会尝试动态确定连接的屏幕,除非您有覆盖xorg.conf文件。您可以尝试sudo X -configure在 X 未运行并且监视器工作正常时创建这样的文件。看架构Linux举一些例子。

相关内容