必须从电源管理抑制、服务唤醒源切断、kysec进程保护三方面同步阻断,才能彻底禁止非授权唤醒行为:禁用systemd-wakealarm定时唤醒、关闭硬件设备(如蓝牙/网卡)的wakeby能力、清除kysec唤醒白名单条目。

麒麟系统中某些软件会通过网络、定时器或硬件事件(如蓝牙信号、USB插拔)主动唤醒休眠中的后台进程,导致设备异常耗电、发热或后台服务被意外拉起;必须从电源管理抑制、服务唤醒源切断、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 '$3 ~ /enabled/ {print $1}',列出所有启用唤醒的设备名(如 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 的条目即为风险项。
第二步:移除指定唤醒权限
找到目标进程对应行的 ID(如 0x7f8a3c1b),执行:sudo kysec-ppro-remove --id 0x7f8a3c1b。
第三步:验证是否生效
再次运行 kysec-ppro-list --type=wakeup,确认该 ID 不再出现;若仍有残留,需配合 sudo setstatus -f ppro off 临时关闭模块后再清理。











