[Debian][KVM] 仮想マシンはVNC接続で
その後 kvm を使っていろいろ不便なこともあり、当初の使用手順を変更することにした。
仮想マシンマネージャ(virt-manager)を止めた
virt-manager は、まだ使い勝手が悪いように思う。前にも書いたように usb を使用するのに面倒な手順が要る。またゲストOSをSXGA(1280x1024)で表示する際に不便なことも多い。
そこで virt-manager は止めて、kvm から直接に VNC 接続を行うようにした。起動スクリプトは以下のよう(一部抜粋)。
... MONITOR=telnet::${PORT},server,nowait VNC=:1 ... /usr/bin/kvm -name ${IMAGENAME} \ -net nic,vlan=0,macaddr=${MACADDR} \ -net tap,vlan=0,ifname=tap0 \ -boot c \ -smp ${CPUS} \ -cdrom ${CDROM} \ -m ${MEMSIZE} \ -hda ${IMAGE} \ -usb \ -localtime \ -usbdevice tablet \ -vnc ${VNC} \ -k ja \ -monitor ${MONITOR}\ -pidfile ${PIDFILE} \ -daemonize
ここで
Windows(ゲストOS)のシャットダウン
ゲストOSがWindowsである場合、上記のkvmデーモンをkillしてシャットダウンするのは気持ちが良くない。電源の遮断と変わらない。ゲストOSでシャットダウンすれば良いというものだが、ホストOSを落とす時に少し煩わしい。遊びも兼ねてリモートシャットダウンを試みる。
リモートシャットダウン(ローカルマシン上ではあるが)するために、上記で開いたtelnetのモニタに接続する。
$ telnet localhost 5899 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. QEMU 0.12.4 monitor - type 'help' for more information (qemu) system_powerdown
「(qemu)」がモニタのプロンプト。ここでは、モニタのポート(上記の${PORT}変数)を5899に設定している。今はセキュリティーを無視しているが、ファイアウォールを適宜、設定することが必要。
ここで「quit」コマンドを打つと仮想マシンは落ちるが、それではデーモンのkillと変わらないので、「system_powerdown」コマンドを使う。ゲストOS側が対応していれば、スムーズにシャットダウンが行われる。