在B站上看到有UP用电源键控制PVE中的虚拟机开关,出于好奇便实践了一番。
这里已经将显卡等硬件直通给了win11虚拟机,为了更贴近个人电脑的使用习惯,方便不了解PVE的人使用,需要使用电源键控制虚拟机启停。(还避免了顺手按电源键把PVE给关了)
本文只是用于记录,过程参考了 物理电源键控制PVE虚拟机开关
开始
在BIOS中启动ACPI
屏蔽默认电源按钮事件
先备份logind.conf
cp /etc/systemd/logind.conf /etc/systemd/logind.conf.bak
编辑 /etc/systemd/logind.conf
改动如下,其他不动
HandlePowerKey=ignore
PowerKeyIgnoreInhibited=no
重启服务
systemctl restart systemd-logind
获取电源按钮事件ID
安装ACPI支持
apt install acpid acpi-support
使用acpi_listen
开启监听,然后去按一下电源键,复制PBTN
这一行
root@home:~# acpi_listen
button/power PBTN 00000080 00000000
button/power LNXPWRBN:00 00000080 00000001
编辑事件触发动作
新建一个电源键的事件文件 /etc/acpi/events/powerbtn
,PBTN
为上一步所获取到的值
event=button/power PBTN 00000080 00000000
action=/etc/acpi/power_btn.sh
编辑执行脚本 /etc/acpi/power_btn.sh
,此处我需要启动虚拟机104,改成自己需要的虚拟机id即可
#!/bin/bash
# 获取虚拟机 104 的状态
output=$(qm status 104)
# 判断虚拟机是否正在运行
if [[ $output == *"running"* ]]; then
# 如果虚拟机正在运行,执行关机操作
qm shutdown 104
else
# 如果虚拟机没有运行,执行启动操作
qm start 104
fi
修改一下执行脚本的权限
chmod +x /etc/acpi/power_btn.sh
最后重启acpid
服务
systemctl restart acpid
评论区