我可以在Linux下的ASRock x399 Taichi主板上的AMD Threadripper 1950x上监视哪些传感器。去年宣布,温度监控功能适用于Ryzen处理器,据称该功能已包含在4.15内核中,据此:https ://www.phoronix.com/scan.php?page=news_item&px=AMD-Zen-Temps -Hwmon-Next。但是,似乎温度是偏移的,根据以下内容在内核4.18.6中已修复此问题:https ://www.phoronix.com/scan.php?page = news_item&px = Linux-4.18.6-k10temp-Correct
据我所知,在Windows下绝对没有关于Windows下的每核温度监控的话题。
但是,其他消息来源则建议我可能需要专门基于主板来构建模块。这些说明似乎建议我可以基于sensor-detect的输出构建适当的内核驱动程序:https : //linuxconfig.org/monitor-amd-ryzen-temperatures-in-linux-with-latest-kernel-modules
根据传感器检测的编码,我有nct6775,但找不到任何迹象表明我具有适当的内核模块(lsmod未显示,还有其他地方我应该看吗?)。不幸的是,我无法从存储库中进行构建,因为它不再位于github上。
所以这是我的问题:
哪些驱动程序和内核模块提供哪些信息?具体来说,哪些提供了Windows下可用的每核读数?
linux下Ryzen的温度驱动程序的状态是什么:完整,不完整,被一起黑客入侵且永远不会可靠?
如果我可以制造nct6775,那么除了已经拥有的K10之外,还能给我带来什么?我还可以从哪里获得构建它们的资源?
为什么这么差的记录?课程发布后一年半没有关于此的明确信息,按照行业标准,AMD是否会毫无帮助吗?
[OP删除的答案:]我仍然想知道:现在使nct6775真正可用的是什么?
在以下链接中,有很多尝试回答一般性问题的尝试。不幸的是,它们都不是全面的,因此我将尝试对其进行改进。Linux:如何查找用于设备的设备驱动程序?
在您的情况下,可以将传感器设备找到为中所示的链接之一ls -l /sys/class/hwmon/*
。您可以尝试扩展该命令,并立即找到您的内核模块:
ls -l /sys/class/hwmon/*/device/driver/module
但是,此命令进行一些假设。并非在所有情况下都有效。如果该命令不起作用,请通过检查链中的每个单独的链接来缩小范围。有三种可能的情况。
您有一个driver
链接,但没有module
链接。
这意味着驱动程序已内置在内核中!哪种会回答您的问题:-)。
同样有可能ls -l
在driver
链接上。即要查看驱动程序的名称,请更改以上命令以删除该/module
部件。通常,驱动程序名称与可加载模块的名称相同,但是有时它们是不同的。
该driver
链接不立刻下device
,但...
如果以上命令不起作用,则可能需要替换device
为device/device
,以此类推。
该device
链接将您带到父设备。但是有时,驱动程序代替了祖父母设备,甚至更远的是:-)。
没有任何父级device
具有driver
链接,或者根本没有父级device
链接。
该device
链接将您带到父设备。例如,您可能有网络设备/sys/class/wlan0
,并且/sys/class/wlan0/device
可能指向提供的PCI卡wlan0
。
在您的情况下,我可以想象它在标准pci
总线上没有像设备这样的东西。在这种情况下,驱动程序应该在中定义自己的自定义设备/sys/devices/platform/
。这正是coretemp
我的Intel CPU的驱动程序所做的。
但是,如果您的驱动程序错了,它将创建一个没有父设备的设备,因此也就没有device
链接。传感器(hwmon
设备)是较模糊的子设备之一;我已经看过几次这种情况了。展望ls /sys/devices/virtual/*
,我似乎有一个得到这个错误的三个设备,和所有的人都hwmon
设备。
如果没有“身体的” /父母的device
,那么就不会有driver
。对于真正的虚拟设备(如回送(lo
)或bridge
网络设备),这是预期的行为。它反映了Linux内核的设备模型。在物理设备上,您可以删除与其绑定的驱动程序,并可能绑定其他驱动程序。没有物理设备来支持它是没有意义的。不幸的是,因为没有这样的等效方法来找到实现虚拟设备的模块。
内容:
$ cd /sys/class/hwmon/
$ ls -l *
total 0
lrwxrwxrwx. 1 root root 0 Dec 2 17:50 hwmon0 -> ../../devices/virtual/thermal/thermal_zone0/hwmon0
lrwxrwxrwx. 1 root root 0 Dec 2 17:50 hwmon1 -> ../../devices/virtual/hwmon/hwmon1
lrwxrwxrwx. 1 root root 0 Dec 2 17:50 hwmon2 -> ../../devices/virtual/thermal/thermal_zone8/hwmon2
lrwxrwxrwx. 1 root root 0 Dec 2 17:50 hwmon3 -> ../../devices/platform/coretemp.0/hwmon/hwmon3
$ ls -l hwmon3/device/driver/module
lrwxrwxrwx. 1 root root 0 Dec 2 18:32 /sys/class/hwmon/hwmon3/device/driver/module -> ../../../../module/coretemp
但是其他结果看起来并不那么有用:-)。什么virtual/thermal/thermal_zone0/hwmon0
啊
hwmon
设备(和某些其他类型)也有一个name
。例如,iwlwifi
传感器确实由我的Intel Wi-Fi卡提供。但是该驱动程序存在故障,因此将其声明为虚拟设备。
$ head */name
==> hwmon0/name <==
acpitz
==> hwmon1/name <==
dell_smm
==> hwmon2/name <==
iwlwifi
==> hwmon3/name <==
coretemp
这是另一台设备,驱动程序位于“祖父母”上:
$ ls -l */device/device/driver
lrwxrwxrwx. 1 root root 0 Dec 2 18:33 /sys/class/hwmon/hwmon0/device/device/driver -> ../../../../bus/acpi/drivers/thermal
该驱动程序也没有模块,因为该模块是内核内置的。如果可以在内核构建配置中找到相应的选项,则可以确认这一点。但是,此名称不必与模块相同。
$ ls -l */device/device/driver/module
ls: cannot access '*/device/device/driver/module': No such file or directory
$ grep CORETEMP= /boot/config-$(uname -r)
CONFIG_SENSORS_CORETEMP=m
$ grep ACPI_THERMAL= /boot/config-$(uname -r)
CONFIG_ACPI_THERMAL=y
您说您不确定100%所做的事情。如果找到了模块名称,但是您担心,因为您不记得是否从未知的网站安装了模块名称,因此可以查看以下内容。
您可以重新加载模块并检查从中重新加载模块的路径:
$ modprobe --remove coretemp
$ modprobe -v coretemp
insmod /lib/modules/4.19.4-200.fc28.x86_64/kernel/drivers/hwmon/coretemp.ko.xz
然后,您可以查询程序包管理器,以确认模块文件来自分发内核程序包。例如,RPM:
$ rpm -q --whatprovides /lib/modules/4.19.4-200.fc28.x86_64/kernel/drivers/hwmon/coretemp.ko.xz
kernel-core-4.19.4-200.fc28.x86_64
$ rpm -q --whatprovides /boot/vmlinuz-$(uname -r)
kernel-core-4.19.4-200.fc28.x86_64
程序包管理器还应允许您验证安装的程序包文件没有被修改。
确认软件包的来源不是那么简单::)。通常,您查看软件包名称并猜测:-)。您可以使用来获得可用软件包以及它们来自何处的列表dnf info kernel
,但我认为dnf无法显示已安装的RPM文件或可用RPM的校验和。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句