LinuxのASRockx399 TaichimoboのAMDThreadripper1950xで監視できるセンサー。これによると、昨年、温度監視が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 -正解
私の知る限り、Windowsで利用できるようなLinuxでのコアごとの温度監視についての話はまったくありません。
ただし、他の情報源によると、マザーボードに基づいてモジュールを構築する必要があるかもしれません。これらの手順は、sensors-detectの出力に基づいて適切なカーネルドライバーを構築できることを示唆しているようです: https://linuxconfig.org/monitor-AMD-ryzen-temperatures-in-linux-with-latest- kernel-modules
センサーによると-nct6775を検出しましたが、適切なカーネルモジュールがあることを示す兆候が見つかりません(lsmodには表示されていませんが、他に確認する必要がある場所はありますか?)。残念ながら、リポジトリはgithubにないため、リポジトリからビルドできません。
だからこれらは私の質問です:
どのドライバーとカーネルモジュールがどのような情報を提供しますか?具体的には、Windowsで利用できるコアごとの測定値を示すものはどれですか?
LinuxでのRyzenの温度ドライバーのステータスはどうなっていますか:完全、不完全、一緒にハッキングされ、信頼性はありませんか?
Nct6775をビルドできるとしたら、すでに持っているK10に加えて、何が得られますか?それらを構築するためのソースを入手するには、他にどこに行けばよいでしょうか?
なぜこれはあまり文書化されていないのですか?コースのリリースパーから1年半後、これに関する明確な情報がありませんが、AMDは業界標準では異常に役に立たないのでしょうか?
[OPによる回答の削除:]私はまだ知りたいです:nct6775を現在利用できるようにしているのは正確には何ですか?
次のリンクで一般的な質問に答える試みはたくさんあります。残念ながら、それらのどれも包括的ではないので、私はそれらを改善しようとします。 Linux:デバイスに使用されているデバイスドライバーを見つける方法は?
あなたの場合、センサーデバイスはls -l /sys/class/hwmon/*
に示されているリンクの1つとして見つけることができます。そのコマンドを拡張して、カーネルモジュールをすぐに見つけることができます。
ls -l /sys/class/hwmon/*/device/driver/module
ただし、このコマンドにはいくつかの前提があります。すべての場合に機能するとは限りません。コマンドが機能しない場合は、チェーン内の個々のリンクをチェックしてコマンドを絞り込みます。考えられるケースは3つあります。
driver
リンクはありますが、module
リンクはありません。
これは、ドライバーがカーネルに組み込まれていることを意味します。どちらがあなたの質問に答えるでしょう:-)。
driver
リンクでls -l
することも同様に可能です。つまりドライバの名前を表示するには、上記のコマンドを変更して/module
部分を削除します。多くの場合、ドライバ名はロード可能なモジュールの名前と同じですが、異なる場合もあります。
driver
リンクはdevice
の下にすぐにありませんが、...
上記のコマンドが機能しない場合は、device
をdevice/device
などに置き換える必要がある場合があります。
device
リンクをクリックすると、親デバイスに移動します。しかし、ドライバーが代わりに祖父母のデバイス上にある場合もあれば、さらに:-)。
親device
(s)のいずれにもdriver
リンクがないか、親device
リンクがまったくありません。
device
リンクをクリックすると、親デバイスに移動します。たとえば、ネットワークデバイス/sys/class/wlan0
があり、/sys/class/wlan0/device
がwlan0
を提供するPCIカードを指している場合があります。
あなたの場合、標準のpci
バスにデバイスのようなものがないことを想像できます。この場合、ドライバーは/sys/devices/platform/
で独自のカスタムデバイスを定義するために想定されます。これはまさに私のIntelCPUのcoretemp
ドライバーが行うことです。
ただし、ドライバーがこれを間違えると、親のないデバイスが作成されるため、device
リンクが作成されません。センサー(hwmon
デバイス)は、よりあいまいな子デバイスの1つです。私はこれが数回前に起こるのを見ました。 ls /sys/devices/virtual/*
を見ると、これを誤るデバイスが3つあるようですが、それらはすべて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
センサー。これは実際には私のIntelWi-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%確信が持てないと言いました。モジュール名を見つけたが、未知のWebサイトからインストールしたかどうか思い出せないので心配だった場合は、次のことを確認できます。
モジュールをリロードして、モジュールがリロードされたパスを確認できます。
$ 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のチェックサムを表示できないと思います。