麒麟系统非授权唤醒需从电源管理抑制、唤醒源切断、kysec保护三方面同步阻断:禁用systemd-wakealarm定时唤醒、关闭硬件设备wakeby能力、清除kysec唤醒白名单条目。

麒麟系统中某些软件会利用进程自身注册的唤醒源(如定时器、网络包、硬件事件)在系统休眠后强行拉起后台服务,导致耗电异常、发热加剧或隐私泄露;必须从电源管理抑制、服务唤醒源切断、KYSEC进程保护三方面同步阻断,才能彻底禁止非授权唤醒行为。
禁用systemd-wakealarm定时唤醒机制
系统级定时唤醒由 systemd-wakealarm 驱动,常被更新程序、日志轮转或第三方工具滥用。若未关闭,即使进程已退出,也会在设定时间点被内核强制拉起。
执行命令查看当前活跃的 wakealarm 事件:sudo cat /sys/class/rtc/rtc0/wakealarm。若输出为一串数字(如 1723982400),说明存在待触发唤醒。
立即清除所有待唤醒任务:echo 0 | sudo tee /sys/class/rtc/rtc0/wakealarm。
永久禁用该机制:编辑 /etc/systemd/logind.conf,将 HandleLidSwitch= 和 HandlePowerKey= 行统一改为 ignore,并确保 IdleAction=ignore 已启用——不改此项会导致 logind 在空闲后仍尝试唤醒进程。
屏蔽特定服务的 WakeBy 硬件唤醒能力
蓝牙、网卡、USB 设备等可通过 ACPI 或 USB wakeup 功能触发系统从 suspend 状态恢复,并顺带拉起关联服务。需逐项检查并关闭其唤醒权限。
方法一:查当前可唤醒设备
执行:cat /proc/acpi/wakeup | awk ' ~ /enabled/ {print }',列出所有启用唤醒的设备名(如 XHC、EHC1、BRCM)。
方法二:关闭指定设备唤醒
以蓝牙控制器为例,先确认其设备路径:lspci | grep -i bluetooth,再执行:echo XHC | sudo tee /proc/acpi/wakeup(XHC 为示例名,须替换为实际输出值)。该操作会将 enabled 切换为 disabled。
方法三:冻结网卡唤醒(针对有线/无线网卡)
执行:sudo ethtool -s eth0 wol d(eth0 替换为实际网卡名);若为无线网卡,运行:sudo iwconfig wlp3s0 power off。这一步能阻止网络包触发唤醒。
用kysec-ppro-remove清除唤醒白名单条目
KYSEC 进程保护模块不仅监控异常进程,还维护一个“允许唤醒”的可信进程白名单。若某软件曾被手动加入该名单,它就具备绕过电源策略唤醒系统的权限。
第一步:列出当前所有 KYSEC 唤醒白名单项
执行:sudo kysec-ppro-list --type=wakeup。输出中含 status: enabled 且 reason: wakeup 的条目即为风险项。
第二步:移除对应白名单条目
执行:sudo kysec-ppro-remove --name "软件名"(例如:sudo kysec-ppro-remove --name "WeChat")。该命令会精准删除该进程名关联的所有唤醒许可记录。
第三步:验证是否清除成功
再次运行 sudo kysec-ppro-list --type=wakeup,确认目标软件名称不再出现在输出列表中。











