如何设置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-2和1-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




