技术解析

Linux 休眠之后关机(长按电源键或断电),如何使下次启动时能恢复系统状态?
0
2021-06-21 05:20:53
idczone

记得 Windows 10 是可以的。我用 Ubuntu 18.04 。


我觉得你应该先了解下睡眠和休眠

hibernate 保存系统状态到硬盘,应该是可以恢复,但不知道怎么设置。

你要的是类似于虚拟机的挂起功能?

要长按电源键或断电才能关机的那种不叫休眠叫睡眠。
休眠是保存内存数据进硬盘后电脑自己会关机的。

sudo hibernate
我长期用这个休眠功能,现在用的是 18.04
偶尔出现恢复以后不认 usb 鼠标键盘只能重启

常见的休眠有 3 种
挂起
蛰伏
混合挂起
挂起:将状态保存到 RAM,然后停止工作,这又产生了 3 种不同的挂起
挂起到 idle
通电挂起(浅度挂起)
挂起到 RAM (深度挂起)
并非所有平台都支持所有的模式。挂起到 idle 支持全部平台。
挂起到 idle:纯软件的挂起,仅冻结用户应用程序
通电挂起(浅度挂起):CPU 保持功率,冻结用户程序,然后挂起外设或将外设至于低功耗状态。
挂起到 RAM (深度挂起):冻结用户程序,冻结非启动 CPU,挂起外设或将外设至于低功耗状态,然后 BIOS (或系统固件)接管机器控制权。
蛰伏:蛰伏的前提是能“挂起到 RAM (深度挂起)”,然后将状态写入硬盘。下次从硬盘恢复。
混合挂起:同时“挂起到 RAM (深度挂起)”和写入硬盘,若机器没有断电,则从 RAM 恢复,否则从硬盘恢复。这能大大提高恢复速度。
你需要的是“蛰伏”。
要配置蛰伏,必须让内核知道从哪里恢复状态。配置引导程序并给内核传递 resume 选项。(类似于 root 选项的格式,可以用 /dev/xxx 或者 uuid )指定 swap 分区。
传递 shutdown 到 /sys/power/disk,然后传递 disk 到 /sys/power/state 开始蛰伏
更多信息阅读内核文档。
另外,“蛰伏”依赖硬件的支持,因此在某些硬件上会出现问题,若出现问题,你应该尝试配置 BIOS、升级 BIOS 版本等。若不能解决的话从网络上查找解决方案。
此外,强烈建议大于 RAM 的 swap 分区以避免蛰伏失败。

https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate
你说的应该是 Suspend to disk,不用按电源键,建议 swap 分区用固态硬盘,否则保存和恢复很慢。

swap 一半就够了。不够不会睡眠,晃晃鼠标屏幕又会亮

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服