2017-02-15 1488 views
1

我想运行一个我用libvirt buildroot创建的linux映像。libvirt qemu-system-arm,错误:XML错误:没有PCI总线可用

如果我直接用QEMU系统臂,一切都会按计划:

/usr/bin/qemu-system-arm \ 
-M versatilepb \ 
-kernel output/images/zImage \ 
-dtb output/images/versatile-pb.dtb \ 
-drive index=0,file=output/images/rootfs.ext2,if=scsi,format=raw \ 
-append "root=/dev/sda console=ttyAMA0,115200" \ 
-net nic,model=rtl8139 \ 
-net user \ 
-nographic 

然而,当我试图从我的QEMU CMDLINE创建XML,它失败:

$ virsh domxml-from-native qemu-argv qemu.args                  
error: XML error: No PCI buses available 

我也试过用手工创建一个基本的XML:

<?xml version='1.0'?> 
<domain type='qemu'> 
     <name>Linux ARM</name> 
     <uuid>ce1326f0-a9a0-11e3-a5e2-0800200c9a66</uuid> 
     <memory>131072</memory> 
     <currentMemory>131072</currentMemory> 
     <vcpu>1</vcpu> 
     <os> 
       <type machine='versatilepb'>hvm</type> 
       <kernel>zImage</kernel> 
       <cmdline>root=/dev/sda console=ttyAMA0,115200</cmdline> 
       <dtb>versatile-pb.dtb</dtb> 
     </os> 
     <devices> 
       <disk type='file' device='disk'> 
         <source file='rootfs.ext2'/> 
         <target dev="sda" bus="scsi"/> 
       </disk> 
       <interface type='network'> 
         <source network='default'/> 
       </interface> 
     </devices> 
</domain> 

其失败,出现同样的错误:

$ virsh create guest-test.xml 
error: Failed to create domain from guest-test.xml 
error: XML error: No PCI buses available 

我已经与尝试了全新的和最新的libvirt-3.0.0,没有任何成功

我需要在我的CMDLINE/XML改变什么?

回答

1

的virsh domxml-从本地问题

之所以domxml-from-native命令不起作用是因为libvirt的,做解析底层代码预计qemu-system-后缀是一个canonical architecture name,而arm不是。在你的情况下,它似乎你想要arm映射到armv7l这是一个cannonical体系结构名称。您可以通过创建一个软链接qemu-system-armv7l指向您的系统的qemu-system-arm拉本,然后使用您qemu.args

代码的软链接的位置引用

xml问题

由于多个不相关的原因,你的xml给了你相同的错误。在os下的type元素中,您需要指定arch="armv7l"(或其他一些规范臂拱名称)。还要注意,kerneldtb引用必须是绝对路径或以.作为前缀。最后一些设备需要PCI总线,并且不适用于您要使用的机器。考虑下面的选择。

<domain type='qemu'> 
    <name>Linux ARM</name> 
    <uuid>ce1326f0-a9a0-11e3-a5e2-0800200c9a66</uuid> 
    <memory>131072</memory> 
    <currentMemory>131072</currentMemory> 
    <vcpu>1</vcpu> 
    <os> 
    <type arch="armv7l" machine='versatilepb'>hvm</type> 
    <kernel>/path/to/zImage</kernel> 
    <cmdline>root=/dev/sda console=ttyAMA0,115200</cmdline> 
    <dtb>/path/to/versatile-pb.dtb</dtb> 
    </os> 
    <devices> 
    <disk type="file" device="disk"> 
     <driver name="qemu" type="qcow2"></driver> 
     <source file="/path/to/root.qcow2"></source> 
     <target dev="sda" bus="sd"></target> 
    </disk> 
    <serial type="tcp"> 
     <source mode="bind" host="localhost" service="4000"></source> 
     <protocol type="telnet"></protocol> 
    </serial> 
    </devices> 
</domain>