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

转换后的内容如上所示。

posted @ 2010-11-29 14:04  chinacloud  阅读(3586)  评论(0编辑  收藏  举报