电源管理:suspend和hibernate

suspend模式

当前有3种suspend模式:

  • suspend to RAMsuspend):状态保存和恢复都在内存中,节约的主机的电能。对于在电池状态运行的笔记本或者合上屏幕的笔记本推荐使用。

  • suspend to diskhibernate):状态保存在swap空间并完全关闭主机。当主机电源启动,状态从swap恢复。这也是完全没有电能消耗的模式。

  • hybrid suspendsuspend to both):状态保存在swap,但是并不关闭主机电源。相反,它激活suspend to RAM。这样,如果电池没有耗尽时,就会从RAM中恢复主机状态。如果电池耗尽,则可以从磁盘恢复,此时恢复的时间比suspend to RAM较长,但是不会丢失数据。

要求

  • (按照文档要求)软件包要求

emerge --ask sys-power/suspend
emerge --unmerge sys-power/upower
emerge --ask sys-power/upower-pm-utils

必须卸载掉sys-power/upower并安装sys-power/upower-pm-utils,这样才会在桌面环境出现SuspendHibernate按钮。另一种替代选择是使用sys-power/hibernate-script,这种方式适用于打过swsuspTuxOnIce补丁包的内核。

  • 内核配置

Power management and ACPI options --->
    [*] Suspend to RAM and standby
    [*] Hibernation (aka 'suspend to disk')

可用的suspend模式

通过以下命令检查可用的suspend模式

显示输出

suspend to RAM

使用以下命令执行suspend

或者

或者

也可以通过底层方式

或者(对于Tol)

或者(对于TuxOnIce)

suspend to disk

要能够suspend to disk需要确保系统中有swap分区或者swap文件,并且swap文件要在使用前激活

使用sys-power/pm-utils suspend to disk

  • 首先检查是否具备swap分区

假设使用/dev/sdc2分区

编辑/etc/default/grub并添加GRUB_CMDLINE_LINUX_DEFAULT选项有关swap分区

重建grub2配置

更新initramfs

添加以下行到/etc/pm/config.d/gentoo

重启系统

然后就可以尝试

使用swap文件suspend to disk

对于我自己的实践,我是采用Mac双启动方式在MacBook上安装Gentoo Linux。由于分区限制,只划分了一个分区给Gentoo Linux,所以实际是采用swap文件来实现hibernate的。

  • 创建swap文件

显示输出

  • 查出swap文件所在磁盘分区的UUID

显示输出

  • 计算出swap文件的偏移量

显示输出

man swap-offset可以看到swap-offset命令的解释是program to calculate the offset of a swap file in a partition,所以这里我使用的是/dev/sda4分区的UUID

  • 修改GRUB配置/etc/defaults/grub(我没有进行这步,仅供使用grub的用户参考;我使用的是rEFInd的EFI bootloader,没有使用grub2)

然后重建GRUB配置

然后重启系统尝试hibernate

  • 我使用的是EFI bootloader rEFInd ,所以跳过刚才的配置GRUB步骤(如果你是用GRUB,没有使用rEFInd可以忽略这步),配置EFI/refind/refind.conf

这里添加的配置就是 resume=UUID=6d6de45b-52b9-4c13-81b2-aff34a6791bd resume_offset=5382144

不过,实际我测试还是没有成功,日志中显示

待探索!!!

xfce和suspend

我使用xfce桌面环境,其内置的xfce-extra/xfce4-power-manager则依赖sys-power/upower而且不能很好地和upower-pm-utils协作(休眠后会不断亮起screensaver),所以前述设置仅供参考

最终我还是卸载了upower-pm-utils软件包,而采用xfce内建的xfce4-power-manager(依赖sys-power/upower软件包)。

使用suspend to RAM方式

参考

Last updated

Was this helpful?