libvirt.xml
<domain type='kvm'>
<name>abc</name>
<os>
<type>hvm</type>
<kernel>/software/iso/vmlinuz-2.6.32-24-generic</kernel>
<initrd>/software/iso/initrd.img-2.6.32-24-generic</initrd>
<cmdline>root=/dev/vda1 console=ttyS0</cmdline>
</os>
<features>
<acpi/>
</features>
<memory>262144</memory>
<vcpu>1</vcpu>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file'>
<source file='/software/iso/neo_1126.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<interface type='bridge'>
<source bridge='br0'/>
<mac address='d0:0d:43:BD:07:E9'/>
<model type='virtio'/>
</interface>
<serial type="file">
<source path='/software/iso/console.log'/>
<target port='1'/>
</serial>
<graphics type='vnc' listen='' port='30002' passwd='30002' />
</devices>
</domain>
简单命令转化后:
<domain type='kvm'>
<name>unnamed</name>
<uuid>adf3dcdf-a624-c538-d538-921117a65d2b</uuid>
<memory>524288</memory>
<currentMemory>524288</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='i686'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>kvm</emulator>
<disk type='file' device='disk'>
<source file='neo_1126.img'/>
<target dev='vda' bus='virtio'/>
</disk>
<input type='mouse' bus='ps2'/>
<graphics type='sdl'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
</video>
</devices>
</domain>
通过这两个xml脚本进行对比,有几处是不同的。将这几次不同逐一实验,也就是用命令:virsh create ./libvirt.xml进行虚拟机的创建,发现video或mouse都是不管用的。最后定位在内核上,将内核去掉用自己的内核,最后鼠标和网卡都正常了。原来是内核的问题,要用原配!看来还是原配的好啊!但neo的内核是18,所以明天用euca-centos的28内核试一下行不行;明天的另一个任务是neo桌面的制作。
windows之所以不受影响,是因为它的内核是自己做的,而不是用linux版本的内核。看看明天的情况吧。
问题已经很明显了,由于rhel的内核版本太低,导致kvm和libvirt版本过低,所以libvirt不支持scsi模式的硬盘,所以改用了virtio格式的硬盘;而virtio格式的硬盘在虚拟机里需要25以上的内核支持,所以创建模板时需要将18的内核替换为25以上的内核,而且切记,不同版本的系统,内核要对号入座。终于清楚了,费了这么大的功夫……
在使用euca的centos内核启动ns时,mouse和nic还是不正常;在用其自己的18内核时,根本启动不起来。
利用好virsh命令:
domxml-from-native Convert native config to domain XML
domxml-to-native Convert domain XML to native config
dumpxml XML 中的域信息
这些命令都是很有用的。在http://libvirt.org/drvqemu.html上有些说明。利用domxml-from-native进行转换:
virsh domxml-from-native qemu-argv demo.args
demo.argv的内容为:kvm -m 512 -drive if=virtio,file=neo_1126.img,index=0,boot=on -boot c -balloon virtio
转换后的内容如上所示。