解决Thinkpad T400在Debian Linux下不能休眠/待机的问题

Thinkpad T400上安装了Debian Lenny后,发现电源管理似乎有点问题,系统不能正常的进入休眠/待机状态。当笔记本长时间处于Idle状态时,并不能进入待机或休眠状态,Gnome电源管理程序出现下面的提示:

Sleep Problem
Your computer failed to suspend/hibernate.
Check the help file for common problems.  

在Google上搜索了一下,其它Thinkpad T400的用户可以在Linux下正常待机或者休眠(Suspend/Hibernate),看来应该是自己笔记本配置问题。

Linux上的电源管理由pm-utils实现,这个工具箱里包含了几个脚本:pm-hibernatepm-suspendpm-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 

Easwy把上述脚本保存到/etc/pm/sleep.d/00CPU,现在,Thinkpad T400可以正常待机/休眠/恢复了。

更多关于Linux上Thinkpad T400的内容,请阅读Easwy的博客上的其它文章。

[ 参考文档 ]

“解决Thinkpad T400在Debian Linux下不能休眠/待机的问题”的6个回复

  1. 你好,能不能说的再详细一些,你是指Gnome中的电源管理么?我看了一下,没有什么相关的项目。

  2. @b1gm0use
    我没有用Ubuntu,用的是Debian,不过Ubuntu应该是类似的
    我的Debian从休眠中恢复很快,时间没具体测试过,不过肯定少于一分钟。
    你检查一下电源管理的相关配置,看是不是配置的问题。

  3. 你好,我也是T400+Ubuntu的用户,请问你在用Ubuntu休眠和恢复的时候,有没有发现休眠和恢复的时间都很长?我估算了一下,冷启动到进入Gnome,大概也就是2分钟不到的时间,而从休眠中恢复大概要用5分钟,休眠的时间也比较长,但是没有估算过。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注