感谢支持
我们一直在努力

在Fedora 14下保护thinkpad笔记本电池

Linux的好处不用讲,缺点也一大堆,实在是我等懒人不太好使用的。比如我的工作笔记本T61,坚持3年用下来,因为RHEL5.x操作系统没有集成电池充放保护模块,电池满的时候交流电也还在充,弄坏了2块电池,虽然是资本家出钱不心疼,总归不爽。朋友推荐Ubuntu下面有个tp_smapi模块什么的,可以像windows一样保护电池,google一把,发现Fedora这方面居然落伍了,没有将upstream集成进来,可惜可惜,只有麻烦点DIY了。

根据高手的指导,搞这个东东需要先使用akmods,装好akmod-tp_smapi之后,再进行modprobe装载smapi电池管理模块,最后设置充电起始和终止的阈值,细节如下:

点击这里下载为Fedora编译好的akmod模块,版本低点没关系。
解压后使用rpm -ivh akmod-tp_smapi-0.40-1.fc11.i686.rpm安装之,注意,这个rpm需要kernel devel的支持
调用service akmods restart,之后rpm -qa|grep smapi一下,可以看到为F14有关kernel弄好的rpm已经生成安装了
这时候可以使用modprobe -l| grep smapi看看模块是不是ready了,随后modprobe tp_smapi装载模块试试。
于是乎,可以使用下面的指令设置充电阈值,BAT表示笔记本默认的电池(BAT1好像是BIOS电池,不用管它)

 


  1. # echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh   

  2. # echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh  
# echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
# echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh


做到这里,基本上4和5是在每次需要启用这个功能之前必须做的,因此,不如搞个service,缺省启动,用起来方便(/etc/init.d/tp_smapi):

 


  1. #!/bin/sh   

  2. #   

  3. # chkconfig: 12345 21 80  

  4. . /etc/init.d/functions   

  5. SMAPILOCK=/var/lock/tp_smapi_lock   

  6. start()   

  7. {   

  8. echo -n $“Starting tp_smapi service: “  

  9. /sbin/modprobe -q tp_smapi   

  10. echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh   

  11. echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh   

  12. echo   

  13. touch $SMAPILOCK   

  14. echo   

  15. }   

  16. stop()   

  17. {   

  18. /sbin/modprobe -r tp_smapi   

  19. rm -f $SMAPILOCK   

  20. }   

  21. status()   

  22. {   

  23. status=0  

  24. if [ -f $SMAPILOCK ]; then   

  25. echo “RUNNING”  

  26. else  

  27. echo “UNUSED”  

  28. status=1  

  29. fi   

  30. return $status   

  31. }   

  32. case “$1” in   

  33. start)   

  34. start   

  35. ;;   

  36. stop)   

  37. stop   

  38. ;;   

  39. restart)   

  40. stop   

  41. start   

  42. ;;   

  43. status)   

  44. status   

  45. exit $?   

  46. ;;   

  47. *)   

  48. echo “Usage: $0 {start|stop|status|restart}”  

  49. exit 1  

  50. ;;   

  51. esac  
#!/bin/sh
#
# chkconfig: 12345 21 80
. /etc/init.d/functions
SMAPILOCK=/var/lock/tp_smapi_lock
start()
{
echo -n $”Starting tp_smapi service: ”
/sbin/modprobe -q tp_smapi
echo 20 > /sys/devices/platform/smapi/BAT0/start_charge_thresh
echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh
echo
touch $SMAPILOCK
echo
}
stop()
{
/sbin/modprobe -r tp_smapi
rm -f $SMAPILOCK
}
status()
{
status=0
if [ -f $SMAPILOCK ]; then
echo “RUNNING”
else
echo “UNUSED”
status=1
fi
return $status
}
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
exit $?
;;
*)
echo “Usage: $0 {start|stop|status|restart}”
exit 1
;;
esac
每一次F14升级内核后,有关的akmod都要重新弄,偷懒写个脚本解决吧


  1. #!/bin/sh   

  2.   

  3. echo ‘looking for old rpms …’  

  4.   

  5. for rpm in `sudo rpm -qa| grep smapi`   

  6. do  

  7.         echo undeploying $rpm …   

  8.         sudo rpm -e $rpm   

  9. done   

  10.   

  11. echo ‘installing akmod …’  

  12. sudo rpm -ivh akmod-tp_smapi-0.401.fc11.i686.rpm   

  13. sudo /usr/sbin/akmods –force   

  14. sudo service akmods restart   

  15.   

  16. echo ‘mod status:’  

  17. sudo modprobe -l | grep smapi   

  18.   

  19. echo ‘set battery thresholds …’  

  20. sudo service tp_smapi restart   

  21.   

  22. echo ‘done.’  

赞(0) 打赏
转载请注明出处:服务器评测 » 在Fedora 14下保护thinkpad笔记本电池
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏