qemu-kvmにACPIのshutdownシグナルを送る方法

libvirt使いなさいよって話なんだと思うけど…。
https://wiki.archlinux.org/index.php/QEMU#Starting_qemu_virtual_machines_on_boot
を読んでいたら、

qemu_vm1="-enable-kvm -m 512 -hda /dev/mapper/vg0-vm1 -net nic,macaddr=DE:AD:BE:EF:E0:00 \
 -net tap,ifname=tap0 -serial telnet:localhost:7000,server,nowait,nodelay \
 -monitor telnet:localhost:7100,server,nowait,nodelay -vnc :0"
qemu_vm1_haltcmd="echo 'system_powerdown' | nc.openbsd localhost 7100" # or netcat/ncat

て書いてあって。
-monitorオプション付きでVMの外からQEMUのモニターに接続できるようにしておいて、そこにnetcatでsystem_powerdownコマンドを発行すれば良いと。
そもそも-monitorオプションを知らなかったとかだった。orz
さくらさんのブログ
http://research.sakura.ad.jp/2010/03/08/kvm-install/
にも書いてあったりして、完全に調査不足。

VMの起動(Scientific Linux 6.1の場合)

qemu-kvmでゲストを起動する際に

-monitor telnet::4444,server,nowait

を付ける。

ゲスト側の準備(Scientific Linux 6.1の場合)

ゲスト側でACPIのイベントを監視する必要があるので、

# yum -y install acpid
# chkconfig acpid on
# /etc/init.d/acpid start

としてacpidを動かしてお…こうとするのだが、なぜかデーモンの起動に失敗するので、一度再起動する。

system_powerdownコマンドの発行

ゲストが再起動した後、ホスト側で、

# echo 'system_powerdown' | nc localhost 4444

とする。
VNC仮想マシンのコンソールを見ていると、ゲストがACPIのシャットダウンシグナルを受け取って、シャットダウンされる。
ただ、上記コマンドの発行自体は一瞬で終わるため、ホスト終了時に全てのゲストを安全にシャットダウンさせるには、プロセスの起動状況を確認する等の手間が必要だと思う。
(その場合、上記英語のURLにあるスクリプトが参考になりそう。)
まあそもそもlibvirt(ry