本文来自依云's Blog,转载请注明。
我自以为把 Linux 的分区相关的东西折腾得比较熟了,所以就大胆地在本机上折腾分区,结果有一天就发现,在我在 /etc/fstab 里把 swap 区从UUID
指定改成用LABEL
指定之后,休眠可以成功,但唤醒失败。在开机后应当从 swap 分区恢复的时候,出现错误,然后就直接启动了,其间还毁掉了 swap 分区的内容。这么试过了两次,都失败了,于是我带着迷惑,再也没有试过了。
前天在群里看到这个链接,终于恍然大悟——原来还有个配置文件/etc/initramfs-tools/conf.d/resume!它指明了唤醒时从哪个分区恢复。当初改 swap 后我只改了fstab
但没有改它,所以可以正常使用却不能唤醒。不过重新生成 initrd 时为什么没有自动更新 resume 文件呢?而且休眠时系统也不检查下resume
文件,郁闷。不知道休眠时能不能指定休眠到哪个分区上呢?
resume
文件的内容相当简单,就一行,像这样RESUME=LABEL=swap
,RESUME=
后面的格式和 fstab 的第一栏一样。改了后还要sudo update-initramfs -u
更新 initrd。
另外,唤醒不成功的时候我曾尝试过 s2disk 这个工具,但昨天发现,虽然它在休眠时有进度显示,可是在唤醒的时候失败了——当进度达到 100% 时就没动作了,我的桌面也就没能回来……
Mar 20, 2011 12:37:39 PM
猜测系统只要检测到 /proc/swaps 中有启用的交换,就可以直接休眠到其中,甚至不区分是交换分区还是交换文件。至于休眠唤醒,会去 initrd.img 中查看 resume 的设置,也就是来自 /etc/initramfs-tools/conf.d/resume 的部分。不过还有一个更直接的方法,就是在 grub 中指定 kernel ...... resume=/dev/sdaX,这样直接跳过上面全部设置,启动时还可以在 grub shell 中用 e 命令查看,我觉得是首选。
Mar 20, 2011 01:56:40 PM
在发现这个 resume 文件之前,我哪里知道是这个问题呢。既然有配置文件那还是用它吧,grub 在出了问题时再用。
Mar 22, 2011 09:22:27 PM
很久以前我也遇到过,直接指定内核resume参数搞定的。但我现在休眠老是一些驱动有问题,现在都懒休眠了。
Mar 25, 2011 09:25:29 PM
(*^__^*) 嘻嘻…… 我来过噢,那个链接是我发滴
Jun 10, 2011 09:38:06 PM
生命不息,折腾不止
Apr 06, 2012 10:00:00 PM
我这个文件下就RESUME=UUID=XXX-XXX-XXX-XXX-XXX
和我fstab里的swap一样的,可是我依然不能休眠或挂机后正常唤醒,也没有专有驱动。悲剧啊~win7最稀饭的就是不用电脑了屏幕一盖就好,东西在内存里,机器其他都断电,下次从挂机恢复,速度快又方便,反正笔记本有电池,不怕断电!
Apr 06, 2012 10:19:55 PM
我也很喜欢挂起呵,现在已经七天没关机了,不用时就挂起。休眠几乎不用了。你的「不能休眠或挂机后正常唤醒」是什么情况呢?
Apr 07, 2012 04:25:52 PM
就是无法唤醒,无论休眠还是挂起,休眠就变成了重新开机启动,挂起恢复就是黑屏,什么反应都没有,只能强行重启
Apr 07, 2012 05:09:14 PM
唤醒失败倒是经常的事,见怪不怪了。
Mar 27, 2013 02:04:42 PM
电脑芯片内的存储部件会因为被空间带电粒子击中而发生状态偏转。一般电脑(非服务器)内部没有有硬件纠错设计,所以不适合长时间不间断运行。
当然以上有一部分是我的脑补,至于具体哪些是我记不得了 :)