|
如何让Debian休眠
本人在Debian/Sarge,内核 2.6.10 , bootsplash 环境下成功启用了休眠功能,
把自己的经验些下来,和大家一起探讨:
申明:本人没有“本本”,这里所说的方法只是在台式机上成功。
步骤描述:
1 打内核补丁
2 编译内核
3 安装hibernate包
4 修改 /etc/hibernate/hibernate.conf 文件
5 修改menu.lst
一、内核补丁
请到http://www.suspend2.net/下载你所用的相应内核的补丁。
注意:有的同一个内核有两个补丁,请下载2.17以上版本的。
我用的2.6.10的内核就有两个版本的补丁,但是2.15的那个在休眠后启动的过程中就死掉了。该网站的错误帮助中也有陈述。
你必须使用官方版本的内核,才和补丁兼容。
打补丁的方法: 这个内核休眠补丁是有一系列的小补丁组成的,所以它的补丁方式有所不一样。
假设你的内核在/usr/src/linux下,把software-suspend-2.1.7-for-2.6.10.tar.bz2解压到/usr/src
下面,解压后的文件名很长,为了待会方便打补丁,可改为suspend。
现在打补丁:
- cd /usr/src/linux
- ../suspend/apply ../suspend/
复制代码
就看到一系列打补丁的动作。
上面的命令说明:用补丁包自己带的apply程序打补丁,但是必须告诉程序你的补丁包的目录在哪里。
也就是后面的 ../suspend 的来由。 之所以把文件名该短,是因为在我这里连续两个长目录,换行
后看不清楚。
注意:该补丁包已经内含 bootsplash 补丁,请不要重复打。但是你要启用bootspalsh,要会自己
编译打上bootsplash 补丁的内核。请参考相关资料。
二、编译内核
现在看内核中需要的选项:
- Power management options (ACPI, APM) --->
- [*] Power Management support
- Software Suspend []
- Software Suspend 2 --->
- <*> Software Suspend 2
- <*> Swap Writer
- <*> Text mode console support
- [*] LZF image compression
复制代码
版内已经有很多内核编译的方法,在此不再赘述。我看到一篇很好的英文教程:
http://http://www.hants.lug.org. ... nts/KernelCompiling
三、安装hibernate包
这一步很简单,只需 apt-get install hibernate
四、修改 /etc/hibernate/hibernate.conf 文件
在这个文件当中,你可以选择三种休眠方式中的一种:
swsusp
sysfs_power_state
acpi_sleep
我们打的是suspend2补丁,就选第一种。其它两这方式我猜测可能不需要内核补丁也可以使用,但是
我使用了一下,发现有长眠不醒的情况。大家可根据自己的情况试试。
这是我这部分的修改: (没有修改的部分略去)
- UseSwsusp2 yes #支持swsusp2方式休眠
- EnableEscape yes #用esc 键放弃休眠
- SuspendDevice swap:/dev/hdb1 #很重要。你必须把这里的/dev/hdb1换为你自己的swap分区
- PowerdownMethod 5 #根据自己的需要选 3,4,5。 说明如下:3 for suspend-to-RAM, 4 for ACPI S4 sleep, 5 for poweroff
复制代码
如果你用了bootsplash,还要注意一下三处的修改:
- Bootsplash on
- BootsplashConfig /etc/bootsplash/themes/debian-tux-gnulinex/config/bootsplash-1024x768.cfg
- SwitchToTextMode yes
复制代码
注意:你要指定你自己bootsplash主题的位置。
SwitchToTextMode yes这一项的功能是为了防止splash下休眠后,X 显示错误。
(我在 PowerdownMethod 3)的情况下,X 依然显示错误。原因待查。
五、修改menu.lst
我的menu.lst如下,
- title Debian GNU/Linux, kernel 2.6.10 resume
- root (hd0,1)
- kernel /boot/vmlinuz-2.6.10 root=/dev/hda2 ro vga=791 [color=Red]resume2=swap:/dev/hdb1[/color]
- initrd /boot/initrd.img-2.6.10
- savedefault
- boot
- title Debian GNU/Linux, kernel 2.6.10 noresume
- root (hd0,1)
- kernel /boot/vmlinuz-2.6.10 root=/dev/hda2 ro vga=791 splash=silent [color=Red]resume2=swap:/dev/hdb1 noresume2[/color]
- initrd /boot/initrd.img-2.6.10
- savedefault
- boot
复制代码
主要是加上了resume2内核参数,前一个是让系统重启后恢复到一前的状态。
后一个里的noresume2是让系统在无法恢复休眠前的状态后,让它正常启动的。
好了,现在就可以用在 root 下用 hibernate 来休眠了。
后记:
启动速度明显加快, 我在 PowerdownMethod 5 的情况下, 只用20秒左右就恢复了。
如果你用bootsplash, 我建议你将 menu.lst 中的 splash=silent 去掉,因为有的深色背景
下看不到休眠与恢复的进度条。
本文参考了下面的资料:
http://http://gentoo-wiki.com/HOWTO_Software_Suspend_v2
(gentoo网站的资料的确好!想要弄好bootsplash的,也可以参考上面的howto)
http://www.suspend2.net/ 上的howto |
|