You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何设置Xubuntu 24.04仅允许电源键唤醒休眠系统?

如何设置Xubuntu 24.04仅允许电源键唤醒休眠系统?

嘿,我来帮你搞定这个问题!你想要让Xubuntu 24.04只有按电源键才能唤醒休眠的系统,不让鼠标、键盘这类设备随便触发唤醒,对吧?看你已经动手写了启动脚本,那咱们把剩下的步骤也理清楚,确保万无一失。

首先,先说说你已经在处理的USB设备唤醒问题——这确实是关键的一步,因为大部分误唤醒都是来自键盘鼠标这类USB设备。

1. 检查当前USB设备的唤醒状态

你已经用过这两个命令来查看设备和它们的唤醒状态了,我再贴出来方便参考:
查看已连接的USB设备:

grep . /sys/bus/usb/devices/*/product

输出大概是这样:

/sys/bus/usb/devices/1-2/product:USB Composite Device
/sys/bus/usb/devices/1-4.1/product:2.4G Keyboard Mouse
/sys/bus/usb/devices/1-4/product:USB2.0 Hub
/sys/bus/usb/devices/usb1/product:xHCI Host Controller
/sys/bus/usb/devices/usb2/product:xHCI Host Controller

接着查看这些USB设备的唤醒权限:

grep . /sys/bus/usb/devices/*/power/wakeup

你之前看到的输出里,1-21-4.1(也就是你的键盘鼠标相关设备)是enabled状态,这就是它们能唤醒系统的原因。

2. 编写启动脚本禁用USB设备唤醒

你写的/etc/init.d/usbwakeup脚本就是用来把这些设备的唤醒权限改成disabled的,我给你完善一下脚本内容,确保它能稳定工作:

#!/bin/bash
# 禁用所有USB设备的唤醒功能,只保留电源键
for dev in /sys/bus/usb/devices/*/power/wakeup; do
    echo "disabled" > "$dev"
done
# 如果有个别USB设备你需要保留唤醒(但这里我们不需要),可以注释掉上面的循环,单独设置
# echo "disabled" > /sys/bus/usb/devices/1-2/power/wakeup
# echo "disabled" > /sys/bus/usb/devices/1-4.1/power/wakeup

写完脚本后,别忘了给它加执行权限:

sudo chmod +x /etc/init.d/usbwakeup

然后设置它开机自动启动:

sudo update-rc.d usbwakeup defaults

3. 检查并禁用其他可能的唤醒源

除了USB设备,还有一些ACPI设备(比如笔记本的 lid 开关、PCI控制器)也可能触发唤醒,咱们得一起禁用它们:
首先查看所有ACPI唤醒设备的状态:

cat /proc/acpi/wakeup

输出会类似这样:

Device  S-state   Status   Sysfs node
PEG0      S4    disabled  pci:0000:00:01.0
PEGP      S4    disabled  pci:0000:01:00.0
XHC1      S3    enabled   pci:0000:00:14.0
LID0      S4    enabled   platform:PNP0C0D:00
PWRB      S4    enabled   platform:PNP0C0C:00

这里的PWRB就是电源键,要保留enabled状态;其他比如XHC1(USB控制器)、LID0(笔记本 lid)这些都要改成disabled

你可以通过以下命令切换它们的状态:

# 禁用USB控制器唤醒
echo XHC1 > /proc/acpi/wakeup
# 禁用lid开关唤醒
echo LID0 > /proc/acpi/wakeup

执行一次命令就会把enabled切换成disabled,你可以再用cat /proc/acpi/wakeup确认状态。

为了让这些设置在开机后自动生效,你可以把上面这两行命令加到之前的/etc/init.d/usbwakeup脚本里,这样每次开机都会自动禁用这些非电源键的唤醒源。

4. 测试效果

最后一步就是验证设置是否生效了:
执行命令让系统休眠:

sudo systemctl suspend

休眠后,试试动鼠标、按键盘,看看系统会不会被唤醒——如果只有按电源键才能唤醒,那就说明设置成功啦!

备注:内容来源于stack exchange,提问作者Erik

火山引擎 最新活动