QEMUの引数からlibvirt XMLを自動生成する
libvirtdでVMを起動するにはドメインXMLファイルが必要ですが、QEMUの引数からXMLファイルを生成する方法を紹介します。
まず、QEMUのコマンドラインをテキストファイルに保存します。下記例では見やすくするため改行していますが、すべて1行で書いてください。
kvm -drive index=0,file=/dev/vg/public.root,if=virtio -drive index=1,file=/dev/vg/public.var,if=virtio -drive index=2,file=/dev/vg/public.swap,if=virtio -net nic,model=virtio -net tap,ifname=tap1 -m 512 -kernel /boot/kvm.current/vmlinuz -append root=/dev/vda -vnc :0
テキストファイルをvirsh domxml-from-nativeコマンドに渡して、XMLに変換します。
virsh domxml-from-native qemu-argv public.kvm > public.xml
生成されたXMLを手直ししましょう。
<domain type='kvm'> <name>unnamed</name> <!-- 名前を付ける --> <uuid>a8b095d3-29e0-8523-b9b7-179583a83d40</uuid> <memory>524288</memory> <currentMemory>524288</currentMemory> <vcpu>1</vcpu> <os> <type arch='i686'>hvm</type> <!-- archを削除 --> <kernel>/boot/kvm.current/vmlinuz</kernel> <cmdline>root=/dev/vda</cmdline> </os> <features> <acpi/> <pae/> <!-- 今回はPAE不要なので削除 --> </features> <clock offset='utc'/> <!-- Localtimeの場合は修正 --> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>kvm</emulator> <disk type='block' device='disk'> <source dev='/dev/vg/public.root'/> <target dev='vda' bus='virtio'/> </disk> <disk type='block' device='disk'> <source dev='/dev/vg/public.var'/> <target dev='vdb' bus='virtio'/> </disk> <disk type='block' device='disk'> <source dev='/dev/vg/public.swap'/> <target dev='vdc' bus='virtio'/> </disk> <interface type='ethernet'> <mac address='52:54:00:0d:0e:f1'/> <target dev='tap1'/> <model type='virtio'/> </interface> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='5900' autoport='no' listen=''/> </devices> </domain>
トリビアですが、uuidはuuidgenコマンドで生成できます。