HARDWARE Sensors

出自Gentoo Linux Wiki

跳转到: 导航, 搜索

这篇文章描述了怎么显示计算机内部温度、风扇速度和大多数主板相关电压等信息。实现这些应用要靠lm_sensors

警告:

激活sensors(传感器)要小心,如内核里的i2c,在一些系统中可能会导致风扇停止工作和ACPI系统过热自动关机保护无效等等。这将造成你的计算机一系列问题。

  • 有问题的硬件列表可以查看lm_sensors 页面。
  • 尤其是在IBM ThinkPads 不建议用lm_sensors。

更多的信息要查找特定的硬件wiki或论坛。

目录

[编辑] 安装

用sensors,要先安装两个组件,lm_sensors和一些内核模块。 通常的安装顺序如下:

1.安装所需的内核模块
2.安装lm_sensors
3.用lm_sensors自动检测脚本去检测需要的模块
4.卸载不需要的模块
5.配置sensor命名和属性

[编辑] 内核

除非你准确地知道你需要什么内核模块,否则就把"I2C support"和"Hardware Monitoring Support"下面的全部载入为模块。

Linux Kernel Configuration: Kernel modules
Device Drivers  --->
    <M> I2C support  --->
        <M> I2C device interface
            I2C Hardware Bus support --->  
            # Activate everything
    <M> Hardware Monitoring Support --->
        # Activate everything

[编辑] userspace

安装 lm_sensors:

# emerge -a lm_sensors

如果你喜欢用传感程序, 增加USE lm_sensors 到你的 /etc/make.conf:

文件: /etc/make.conf

USE=" ... lm_sensors ... "

并且更新你的系统. 如 ksysguard 的USE就有 lm_sensors:

# emerge -uDNpv world


[编辑] 检测

用root用户登录运行 sensors-detect:

# sensors-detect

通过检测步骤,最终 sensors-detect 生成一个新的 /etc/conf.d/lm_sensors。这里会看到你需要的模块,其他的就可以从内核中移除。

你要开始传感器要先执行如下服务:

# /etc/init.d/lm_sensors start

sensors 显示你现在的温度、风扇速度等。如果看不到, 查看后面的troubleshooting章节。

如果你想开机自动启动此服务,可以加lm_sensors到你的runlevel:

# rc-update add lm_sensors default

[编辑] 配置

一般情况,lm_sensors 没有用一些英语名称对应某些sensors - 或者可能仅仅只有英语名称. 你可以改变这些名称, 还可以关闭某功能, 和更改数字项都可以编辑 /etc/sensors.conf。这个文件包含很多注释。

最好的方法去编辑这个文件, 是运行 sensors, 和记录下第一行的返回值 (sensor chip),再编辑 /etc/sensors.conf, 搜索此返回值的前面的部分。例如,如果你的 sensor chip 是 w83781d-isa-0290,搜索w83781d, 将会找到如下的一行:

chip "lm78-*" "lm78-j-*" "lm79-*" "w83781d-*"

在这行的下面,就是此chip相关的配置。

如:

文件: /etc/sensors.conf
 chip "lm78-*" "lm78-j-*" "lm79-*" "w83781d-*"
    label in0 "VCore 1"
    label in1 "VCore 2"
    label in2 "+3.3V"
    label in3 "+5V"
    label in4 "+12V"
    label in5 "-12V"
    label in6 "-5V"
    label temp1 "CPU temp"
    label fan2 "CPU fan"
    ignore fan1
    ignore fan3
    ignore temp2
    ignore temp3
    compute in3 ((6.8/10)+1)*@ ,  @/((6.8/10)+1)
    compute in4 ((28/10)+1)*@  ,  @/((28/10)+1)
    compute in5 -(210/60.4)*@  ,  -@/(210/60.4)
    compute in6 -(90.9/60.4)*@ ,  -@/(90.9/60.4)
 

这个配置里有一些英语名称,一些#设置在无用的风扇前,和包含一些默认的电压参数。大多数都不用更改,除了CPU temp和CPU fan,和隐去一个没用的风扇和温度。(这里好像看自己的情况,看着改,都不太一样)

[编辑] 监视器

如果你喜欢看到这些常态数值,那就需要一个监视器。

[编辑] Sensord

sensord 是一个把lm_sensors的数据记录到日志的守护进程。要使用这功能,要打开 sensord USE:

# echo "sys-apps/lm_sensors sensord" >> /etc/portage/package.use

再运行:

# emerge -uDNva lm_sensors

在把sensord加入到启动级别里:

# /etc/init.d/sensord start
# rc-update add sensord default

不幸地是,这会造成 /var/log/messages 变得杂乱。假设你用的是gentoo默认的日志系统(syslog-ng), 接下来的这个处理会过滤掉不必要的杂乱日志 (/var/log/sensord):

文件: /etc/syslog-ng/syslog-ng.conf
 ...
 destination sensord { file("/var/log/sensord"); };
 filter f_sensord { facility(local4); };
 log { source(src); filter(f_sensord); destination(sensord); };
 ...
 

推荐按文件中的依次顺序写入以上的设置。查看过syslog-ng.conf就可以发现明显的特征。local4 是默认的用于sensord的参数。更多的信息可查看man sensord。

如果你按照规则写入后就想立即启动sensord,重启syslog-ng(这也应该自动重启sensord):

# /etc/init.d/syslog-ng restart

更多的配置信息,如改变日志记录间隔或报告设备:

# man sensord

[编辑] 图形的 Sensor 监视器

[编辑] KDE

[编辑] Gnome

[编辑] Other


[编辑] Troubleshooting

Q: "我的sensors 没用出来!" or "我的 sensors 没用检测到!"

阅读 [1][2], 和查看 bug reports. 如果没有帮助,你可以试着实验模块和它们的参数或者发送lm_sensors的错误报告。

Q: "我的 sensors 总是显示多10度!"

你可能需要适当地编辑 /etc/sensors.conf .

Q: "我的 sensor 数据需要除2!"

编辑 /etc/sensors.conf 查找你的chip里没注释的 compute temp ,再把 @* 后面的 2 替换成 1

Q: "sensors-detect spits out No i2c device files found. Use prog/mkdev/mkdev.sh to create them!"

试着运行 modprobe i2c-dev; sensors-detect, 如果失败, google.

Q: "sensors-detect 不能找到相应的模块! 为什么找不到?"

确保你的内核中相关选项已经激活!

Q: "w83627hf 模块触发高风扇速度。"

尝试 modprobe w83627hf init=0

Q: "sensord 没开始。在 /var/log/syslog 里说 'GPIO5 disabled, no VID function' "

A: 加 ignore vid/etc/sensors.conf.

[编辑] 链接