在Thinkpad T400上安装了Debian Lenny后,发现电源管理似乎有点问题,系统不能正常的进入休眠/待机状态。当笔记本长时间处于Idle状态时,并不能进入待机或休眠状态,Gnome电源管理程序出现下面的提示:
Sleep Problem
Your computer failed to suspend/hibernate.
Check the help file for common problems.
上搜索了一下,其它Thinkpad T400的用户可以在Linux下正常待机或者休眠(Suspend/Hibernate),看来应该是自己笔记本配置问题。
Linux上的电源管理由pm-utils实现,这个工具箱里包含了几个脚本:pm-hibernate、pm-suspend和pm-suspend-hybrid。这些脚本一般由窗口管理器Gnome或KDE,通过hald守护进程来调用。当然也可以直接调用这些脚本。Easwy首先使用root用户执行pm-hibernate:
sudo pm-hibernate
执行完这个命令后,笔记本就将内存镜像保存到磁盘上,然后进入休眠模式。既然root用户能切换到休眠模式,那应该是Gnome的登录用户easwy不具备相应的权限。根据参考文档一中的说明,把用户easwy加入powerdev组中,现在在Gnome Power Manager中选择hibernate就可以使计算机中进入休眠状态,不会出现上面的提示。
但新的问题又出现了,T400进入待机或休眠模式后无法正常恢复回来。现象是在恢复时,图形界面显示不完整,这时鼠标键盘都没有反应,过一段时间T400就重新加电重启了。
在网上搜了一下,好像这是由于xf86-video-intel驱动与芯片的兼容性问题造成的,使用下面的脚本可以解决这个问题:
#!/bin/sh
# Workaround for concurrency bug in xserver-xorg-video-intel 2:2.4.1-1ubuntu10.
# Save this as /etc/pm/sleep.d/00CPU
. "/usr/lib/pm-utils/functions"
case "$1" in
hibernate|suspend)
for i in /sys/devices/system/cpu/cpu*/online ; do
echo 0 >$i
done
;;
thaw|resume)
sleep 10 # run with one core for 10 secs
for i in /sys/devices/system/cpu/cpu*/online ; do
echo 1 >$i
done
;;
*)
;;
esac
把上述脚本保存到/etc/pm/sleep.d/00CPU,现在,Thinkpad T400可以正常待机/休眠/恢复了。