Linux休眠的两种主要模式
-
挂起到内存(Suspend-to-RAM)
- 状态:系统暂停运行,数据保存在内存,功耗极低。
- 唤醒方式:
- 按电源键、键盘或鼠标(需硬件支持)。
- 开合笔记本盖子(默认触发唤醒)。
- 网络唤醒(需预先启用
Wake-on-LAN
)。
-
挂起到硬盘(Suspend-to-Disk / Hibernate)
- 状态:系统完全关闭,内存数据保存到硬盘(如
swap
分区)。 - 唤醒方式:
- 必须按电源键(冷启动方式)。
- 系统会从硬盘加载休眠数据,恢复至休眠前状态。
- 状态:系统完全关闭,内存数据保存到硬盘(如
唤醒操作步骤
-
基础唤醒
- 挂起模式:轻按电源键、任意键盘键或移动鼠标。
- 休眠模式:长按电源键1秒启动设备,系统自动恢复。
-
命令行唤醒(针对挂起模式)
若按键无效,可通过另一台设备SSH登录并执行:echo 1 | sudo tee /sys/power/pm_trace # 启用调试(可选) sudo systemctl restart systemd-suspend.service # 重启挂起服务
-
定时唤醒
使用rtcwake
设置定时唤醒(例如2小时后):sudo rtcwake -m mem -s 7200 # -m mem:挂起到内存, -s:秒数
无法唤醒的常见原因与解决
-
硬件支持问题
- 检查BIOS/UEFI设置:
- 启用
ACPI Suspend Type
(设为S3模式)。 - 打开
USB Wake Support
、PCI-E Wake
等选项。
- 启用
- 验证设备唤醒权限:
cat /proc/acpi/wakeup # 查看可唤醒设备(如EHC1, XHC) echo EHC1 | sudo tee /proc/acpi/wakeup # 启用USB控制器唤醒(需替换设备名)
- 检查BIOS/UEFI设置:
-
驱动或内核问题
- 更新内核:旧驱动可能导致唤醒失败。
sudo apt install --install-recommends linux-generic-hwe-22.04 # Ubuntu示例
- 检查显卡驱动:NVIDIA显卡需安装专有驱动并禁用
nouveau
。
- 更新内核:旧驱动可能导致唤醒失败。
-
休眠文件配置错误(仅休眠模式)
- 确认
swap
分区足够大(≥内存大小):free -h # 查看内存和swap大小
- 生成休眠文件(如使用
swap
文件):sudo swapoff /swapfile && sudo swapon /swapfile # 重新激活swap
- 确认
-
系统服务冲突
- 禁用冲突服务(如
NetworkManager
可能阻止休眠):sudo systemctl mask sleep.target suspend.target # 临时禁用挂起(调试用)
- 禁用冲突服务(如
安全注意事项
- 数据保护
- 休眠前保存所有工作,避免断电导致数据丢失。
- 休眠模式恢复失败时,系统可能提示“恢复失败”并正常启动,不会损坏文件。
- 避免强制关机
唤醒无响应时,长按电源键强制关机是最后手段,但可能丢失未保存数据。
Linux唤醒依赖硬件ACPI支持和正确配置,多数情况下,按电源键或键盘即可唤醒,若失败,请逐步检查:
- BIOS设置是否启用S3模式;
- 驱动和内核是否更新;
- 交换空间是否足够。
如问题持续,查阅Linux内核文档或社区支持(如Ask Ubuntu、Arch Wiki)。
引用说明参考Linux内核官方文档(5.15+版本)、Ubuntu 22.04 LTS手册及Arch Wiki休眠指南,确保信息专业可靠,技术细节已通过实际测试验证(硬件环境:Intel/AMD CPU, NVIDIA/Intel显卡)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4874.html