S4状态的使用方法
ACPI中定义了两种进入S4的方法。一个是BIOS主导的方法(S4BIOS),另一个是操作系统主导的方法。如果使用S4BIOS,则BIOS恢复内存,与从S3恢复的情况相同。S4BIOS状态要求系统必须支持S4BIOS。但是,Linux 2.6.30中使用的不是S4BIOS,而是操作系统主导的方法。Linux中S4也称为swap待机,Linux 2.6.30的S4处理通过将内存上的所有数据保存在交换区磁盘来停止电源,恢复时由引导加载程序(bootloader)启动内核,在内核初始化时,把之前保存到交换区磁盘的数据读入内存来快速恢复到原来的状态。
S4状态的使用方法如下,与S3状态同,都是按下电源按钮来重新恢复。
echo"platform">/sys/power/disk
echo"disk">/sys/power/state
休眠要使用交换区磁盘,因此需要有内存量+α的磁盘容量用于交换。一般认为需要准备内存的1.5~2倍的磁盘容量。Linux 2.6.30中默认保存在交换区磁盘的内存数据大小为500MB。如果需要保存500MB以上的内存,可以进行如下操作。
echo"0">/sys/power/images_size
还需要注意恢复系统前的硬件结构。在ACPI中,恢复系统时只要有一个引导设备发生变更,恢复就会失败。由于依存于BIOS的实际安装,因此建议在待机时和系统恢复时不要改变硬件结构。与硬件一样,恢复时如果更改内核启动参数也有可能会出现问题。
另外,有的PC上有可能出现BIOS无法顺利运行,休眠失败的情况。这时可以尝试下列方法。
1.编辑grub.conf,在内核启动参数中添加用于恢复系统的交换设备“resume=<交换设备名称>”。
e.g.
title Fedora(2.6.30.10-105.2.16.fc11.i586)
root(hd0,4)
kernel/boot/vmlinuz-2.6.30.10-105.2.16.fc11.i586 ro root=UUID=eb600401-
ba10-44da-aa90-802740929780 nomodeset rhgb resume=/dev/sdb1
initrd/boot/initrd-2.6.30.10-105.2.16.fc11.i586.2.img
2.将休眠设置为shutdown模式。
echo shutdown>/sys/power/disk
3.进行休眠。
echo disk>/sys/power/state
如果恢复系统后系统运行状态有所不同,有时会通过将交换区的数据强制读入内存来改善性能。命令如下。