银河麒麟V10需同时满足休眠与RTC唤醒硬件支持才能实现自动休眠及定时唤醒:先确认cat /sys/power/state含disk、swap≥内存大小并测试sudo systemctl hibernate成功;再启用UKUI休眠开关并设延迟;最后在BIOS开启RTC Alarm,用echo写入wakealarm时间戳,并禁用logind对电源事件的拦截。

您希望银河麒麟V10在空闲后自动休眠,并在指定时间或事件触发时自动唤醒,但发现仅设休眠时间无效、唤醒不执行或系统始终无法从休眠中恢复——这是因为自动休眠与自动唤醒是两个独立机制,休眠依赖内核与swap,唤醒则必须由硬件级RTC Alarm或AC电源恢复能力驱动,软件层无法单靠UKUI设置完成。
确认系统具备休眠能力
自动唤醒的前提是休眠本身能成功执行,否则唤醒指令无从触发。先验证基础能力是否就绪。
执行cat /sys/power/state,输出中必须包含【disk】;若只有mem、freeze,说明内核未启用休眠支持,后续所有唤醒配置均无效。
运行free -h检查swap大小,若显示为0B或数值小于Mem总内存,需立即创建swap文件:执行sudo fallocate -l 8G /swapfile → sudo chmod 600 /swapfile → sudo mkswap /swapfile && sudo swapon /swapfile → echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab。
测试手动休眠:sudo systemctl hibernate。若机器断电后能按电源键完整恢复桌面状态,说明休眠链路通畅。
启用UKUI休眠开关并设定休眠延迟
图形界面默认可能禁用休眠入口,且自动休眠策略需显式授权才能被底层调用。
方法一:命令行一次性配置
执行gsettings set org.ukui.power-manager can-hibernate true → gsettings set org.ukui.power-manager sleep-computer-ac 28800(交流电下8小时)→ gsettings set org.ukui.power-manager sleep-computer-battery 10800(电池下3小时)。
方法二:图形界面配置
① 点击「开始菜单」→「设置」→「电源」→「更改计划设置」→「更改高级电源设置」;
② 展开「睡眠」→「休眠」节点;
③ 分别为「使用交流电源时」和「使用电池时」填入分钟数(如480和180);
④ 点击「确定」保存——此操作会覆盖gsettings中对应值,但前提是can-hibernate已设为true。
【注意】若图形界面中“休眠”选项仍灰色不可点,需先执行gsettings set org.ukui.power-manager can-hibernate true,再注销重登录。
配置硬件级RTC唤醒(关键步骤)
银河麒麟V10自身不提供GUI端“定时唤醒”开关,必须通过BIOS/UEFI启用RTC Alarm功能,并用Linux命令写入唤醒时间,否则休眠后系统将永远停在断电状态。
第一步:进入BIOS/UEFI设置(开机时反复按Del/F2/F10),找到Power Management或Advanced → RTC Configuration类选项,启用【RTC Alarm Resume】或【Resume by Alarm】,保存退出。
第二步:确认RTC设备可用,执行sudo hwclock --show,若报错“Cannot access the Hardware Clock via any known method”,说明内核未加载rtc_cmos模块,需执行sudo modprobe rtc_cmos并加入/etc/modules持久化。
第三步:设定具体唤醒时间,例如设定明早7:00唤醒:echo "2026-06-26 07:00:00" | sudo tee /sys/class/rtc/rtc0/wakealarm。注意格式必须为YYYY-MM-DD HH:MM:SS,且时间需为未来时刻,否则写入失败。
第四步:验证是否写入成功,执行cat /sys/class/rtc/rtc0/wakealarm,返回值应为Unix时间戳(如1748295600),而非0。
禁用logind物理按键干扰
systemd-logind默认会拦截电源键、盖子闭合等事件,可能覆盖RTC唤醒后的系统启动流程,导致唤醒失败或立即再次休眠。
编辑sudo vim /etc/systemd/logind.conf,取消注释并修改以下三行:HandleLidSwitch=ignoreHandlePowerKey=ignoreHandleSuspendKey=ignore
保存后执行sudo systemctl restart systemd-logind使配置生效。

















