|
发表于 2009-12-27 19:44:24
|
显示全部楼层
Post by lifc;2059805
接着刚才的话题说。第一种方法自己测试了一下没有问题,幸运的是对于e100这种网卡(至少手头这块)第二种方法(2、休眠之前停止网络服务、撤掉内核模块,唤醒后重新加载驱动模块初、始化网络服务)也是可行的。我的方法是在/etc/pm/sleep.d下创建一个50network脚本,具体内容如下:
#!/bin/bash
. /usr/lib/pm-utils/functions
case "$1" in
hibernate|suspend)
/etc/rc.d/network stop
rmmod e100
;;
thaw|resume)
modprobe e100
/etc/rc.d/network start
;;
*)
;;
esac
exit 0
这样每次休眠之前停止全部网络服务并卸载模块,唤醒之后再加载模块(和固件)并重新启用网络服务。这里要说一下,pm-utils本来已经提供了两个与之相关的脚本pm-utils /usr/lib/pm-utils/sleep.d/{11netcfg,55NetworkManager},但前者需要依赖11netcfg后者通过dbus发送通告消息给总线监听者,我这里都没有安装所以就不提了。另外pm-utils可以通过设置SUSPEND_MODULES="e100"这种方法来自动卸载模块,只是因为需要同时关闭、激活网络服务所以就直接写到上面的脚本:rmmod e100/modprobe e100。
貌似以前ehci_hcd,uhci_hcd模块也会导致无法休眠。我觉得pm-utils用这个方法就足够了,没必要去改内核。改得乱七八糟到最后自己都不记得动了哪边。 |
|