Handle ACPI events
acpid
Beginning with Flatcar major release 3255 acpid
can be enabled at boot with Ignition.
This can be configured with a butane definition:
---
variant: flatcar
version: 1.0.0
systemd:
units:
- name: acpid.service
enabled: true
storage:
files:
- path: /etc/acpi/events/default
contents:
inline: |
event=.*
action=/etc/acpi/default.sh %e
- path: /etc/acpi/default.sh
contents:
inline: |
set $*
logger "ACPI event handled: $*"
mode: 0744
This simple configuration will only log the handled ACPI events, example with QEMU:
butane < config.yml > ignition.json
./flatcar_production_qemu.sh -i ./ignition.json -- -qmp tcp:localhost:4444,server,wait=off
From another terminal, it’s possible to send a shutdown signal for example:
telnet localhost 4444
{ "execute": "qmp_capabilities" }
{ "execute": "system_powerdown" }
From the acpid
logs, it’s possible to see the logger in action:
$ journalctl --unit acpid.service
May 24 14:29:36 localhost systemd[1]: Started ACPI event daemon.
May 24 14:29:36 localhost acpid[928]: starting up with netlink and the input layer
May 24 14:29:36 localhost acpid[928]: 1 rule loaded
May 24 14:29:36 localhost acpid[928]: waiting for events: event logging is off
May 24 14:30:20 localhost root[1041]: ACPI event handled: button/power PBTN 00000080 00000000
May 24 14:30:20 localhost systemd[1]: Stopping ACPI event daemon...
May 24 14:30:20 localhost acpid[928]: exiting
May 24 14:30:20 localhost systemd[1]: acpid.service: Deactivated successfully.
May 24 14:30:20 localhost systemd[1]: Stopped ACPI event daemon.
qemu-guest-agent
Beginning with Flatcar major release 3402, qemu-guest-agent is part of all images and can handle certain lifecycle operations without acpid. The agent service will automatically be enabled if a virtio-port with the name org.qemu.guest_agent.0
is detected. For Openstack it is necessary to launch the instance with hw_qemu_guest_agent=yes
set.