http://bbs3.chinaunix.net/thread-1387129-1-1.html
目的:cpu降频,控制风扇当cpu超过某一温度时才转,cpu低于这一温度不转.
环境:FreeBSD 7.0-release,thinkpad r61e(cpu: intel celeron-m).

1 加入ibm的acpi支持
需要内核有(默认的内核已经支持)
device acpi
device acpi_ibm
编辑/boot/loader.conf 加入下面一行,是为了在启动时加入acpi_ibm的模块.
#vi /boot/loader.conf
acpi_ibm_load="YES"

2 cpu降频支持
需要内核有(默认的内核已经支持)
device cpufreq
编辑/etc/rc.conf 加入下面二行,是为了在启动时自动启动powerd进程
#vi /etc/rc.conf
powerd_enable="YES"   #表示开机自动启动powerd进程
powerd_flags="-a adaptive -b adaptive -n adaptive"   #表示在有外接电源时,电池时,当外接电源的状态未知的情况都自动调节cpu频率(-a表示AC,即外接电源,-b表示电池,-n 表示当AC的状态未知的情况,adaptive表示自动调节).

重启之后,输入命令
#top #查看系统进程和其他信息
会看到powerd进程。
用下面的命令分别查看cpu的当前频率、温度、风扇速度.你会看到风扇一直在转.
#sysctl -a | grep dev.cpu.0.freq
#sysctl -a | grep temperature
#sysctl -a | grep fan_speed

sysctl 是一个用来在系统运行时查看及调整系统参数的工具,它的配置文件为/etc/sysctl.conf,要使更改的参数开机生效,需要写入到/etc/sysctl.conf文件中.
不是所有的参数都可以调,有些参数要调整必须重启.
上面的命令是用sysctl -a输出所有的参数,通过grep筛选出含有dev.cpu.0.freq temperature fan_speed的参数.
3 cpu风扇速度控制
(1)安装perl和perl的Proc::Daemon模块
先查看是否安装了perl
#pkg_info | grep perl
如果没有输出,说明没有安装,用下面命令安装
#pkg_add -r perl  
下面安装Proc::Daemon模块
#perl -MCPAN -e shell
一直回车,当问到选mirror站点的时候选亚洲-中国-第一个站(只有一个站),选的时候是输入它们前面的数字,这之后还有一个选备用mirror的(因为前一个站点的软件可能不全),输入,回车以后,它会下载一些东西
当出现cpan>时,输入
install Proc::Daemon
来安装Proc::Daemon模块,安装完后,输入exit退出安装模块的界面
如果中间出错,可以删除Config.pm文件,命令如下
#rm /usr/local/lib/perl5/5.8.8/CPAN/Config.pm
再重新安装模块.

(2)风扇控制的脚本
fancontrol是控制风扇速度的perl脚本(这个脚本我是根据网上的稍微修改的,它的原始程序不能运行),fancontrol.sh是用于让fancontrol在开机自动启动的sh脚本.
假定这两个脚本下载在/tmp目录下
#cp /tmp/fancontrol /usr/local/bin #把fancontrol拷贝到/usr/local/bin/目录下面
#chmod 555 /usr/local/bin/fancontrol #使fancontrol的权限为555(即属主,文件所属的组,其他用户的权限都为:读和执行,没有写的权限)
#cp /tmp/fancontrol.sh /usr/local/etc/rc.d/
#chmod 555 /usr/local/etc/rc.d/fancontrol.sh

重启或者这个时候手动启动风扇控制进程, 输入
#/usr/local/etc/rc.d/fancontrol.sh start
查看进程是否启动,输入
#top
会发现perl5.8.8的进程.
用sysctl查看
#sysctl -a | grep dev.cpu.0.freq
#sysctl -a | grep temperature
#sysctl -a | grep fan_speed
你会发现有时dev.acpi_ibm.0.fan_speed为0

注:为了上传,附件后缀改为zip,它们不是压缩文件,请去掉后缀即可.

[ 本帖最后由 tyqchina 于 2009-3-7 09:57 编辑 ]


2009-3-7 09:54
   下载次数: 0 fancontrol.sh.zip (230 Bytes)
2009-3-7 09:54
   下载次数: 0 fancontrol.zip (5.24 KB)