我可以在 Linux 下的华擎 x399 Taichi 主板上的 AMD Threadripper 1950x 上监控哪些传感器。去年宣布温度监控适用于 Ryzen 处理器,据推测包含在 4.15 内核中,据此:https ://www.phoronix.com/scan.php?page=news_item&px=AMD-Zen-Temps -Hwmon-下一个。但是,似乎温度是偏移的,这是在内核 4.18.6 中根据以下内容修复的:https ://www.phoronix.com/scan.php?page=news_item&px=Linux-4.18.6-k10temp-Correct
据我所知,在 Linux 下绝对没有关于 Windows 下的每核温度监控的说法。
但是,其他消息来源表明我可能需要专门基于我的主板构建模块。这些说明似乎表明我可以根据传感器检测的输出构建适当的内核驱动程序:https ://linuxconfig.org/monitor-amd-ryzen-temperatures-in-linux-with-latest-kernel-modules
根据传感器检测我有 nct6775,但我找不到任何迹象表明我有适当的内核模块(没有用 lsmod 显示,还有其他地方我应该看吗?)。不幸的是,我无法从存储库构建,因为它不再在 github 上。
所以这些是我的问题:
哪些驱动程序和内核模块提供哪些信息?具体来说,哪些给出了 Windows 下可用的每个核心读数?
linux下锐龙温度驱动的现状如何:完整、不完整、被破解、永远不可靠?
如果我能得到 nct6775,除了我已经拥有的 K10 之外,它还能给我什么?我还能从哪里获得构建它们的源代码?
为什么这方面的记录如此糟糕?在课程标准发布一年半之后没有关于此的明确信息,按照行业标准,AMD 是否异常无益?
在以下链接中回答一般问题有很多尝试。不幸的是,它们都不是全面的,所以我会尝试改进它们。 Linux:如何找到用于设备的设备驱动程序?
在您的情况下,传感器设备可以作为中所示的链接之一找到
ls -l /sys/class/hwmon/*
。您可以尝试扩展该命令,并立即找到您的内核模块:然而,这个命令做了一些假设。它不会在所有情况下都有效。如果命令不起作用,请通过检查链中的每个单独链接来缩小范围。有三种可能的情况。
你有
driver
链接,但没有module
链接。这意味着驱动程序内置在内核中!这会回答你的问题:-)。
它同样可以
ls -l
在driver
链接上。即查看驱动程序的名称,更改上述命令以删除该/module
部分。通常驱动程序名称与可加载模块的名称相同,但有时它们不同。driver
链接不在下面,但是device
...如果上述命令不起作用,您可能需要替换
device
为device/device
,等等。该
device
链接会将您带到父设备。但有时驱动程序在祖父母设备上,甚至更远:-)。没有一个父级
device
有driver
链接,或者根本没有父级device
链接。该
device
链接会将您带到父设备。例如,您可能有一个网络设备/sys/class/wlan0
,并且/sys/class/wlan0/device
可能指向一个提供wlan0
.在您的情况下,我可以想象它在标准
pci
总线上没有类似设备的东西。在这种情况下,驱动程序应该定义自己的自定义设备,在/sys/devices/platform/
. 这正是coretemp
我的英特尔 CPU 驱动程序所做的。但是如果你的驱动程序弄错了,它会创建一个没有父设备的设备,因此没有
device
链接。传感器(hwmon
设备)是比较晦涩的子设备之一;我以前见过这种情况发生好几次。往里看ls /sys/devices/virtual/*
,我似乎有三个设备出错了,而且都是hwmon
设备。如果没有“物理”/父母
device
- 那么就没有driver
. 这是真正虚拟设备的预期行为,例如环回 (lo
) 或bridge
网络设备。它反映了 Linux 内核的设备模型。在物理设备上,您可以删除绑定到它的驱动程序,并可能绑定不同的驱动程序。在没有物理设备的情况下支持这一点是没有意义的。不幸的是,没有像这样的等效方法来找到实现虚拟设备的模块。内容:
1. 在 /sys 中查看的示例结果
但是其他结果看起来没有那么有用:-)。是什么
virtual/thermal/thermal_zone0/hwmon0
?hwmon
设备(和一些其他类型)也有一个name
. 例如iwlwifi
传感器,它实际上是由我的英特尔 Wi-Fi 卡提供的。但是驱动程序有问题并将其声明为虚拟设备。这是一个不同的设备,其中驱动程序位于“祖父母”上:
这个驱动也没有模块,因为这个是内核内置的。如果您可以在内核构建配置中找到相应的选项,您可以确认这一点。但是,这不一定与模块命名相同。
2.我找到了模块名称,现在...
你说你不是100%确定你做了什么。如果您找到了模块名称,但您担心因为您不记得是否从未知网站安装了它,那么您可以查看以下内容。
您可以重新加载模块并检查重新加载模块的路径:
然后您可以查询您的包管理器以确认模块文件来自分发内核包。例如对于 RPM:
您的包管理器还应该让您验证已安装的包文件没有被修改。
确认包裹的来源并不是那么简单:-)。通常你会查看包名并猜测:-)。您可以获得可用软件包的列表以及它们的来源,例如使用
dnf info kernel
,但我认为 dnf 不能显示已安装的 RPM 文件或可用 RPM 的校验和。