我正在尝试使用libvirt运行使用buildroot创建的linux映像。
如果我直接使用qemu-system-arm,一切都按预期工作:
/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需要更改什么?
答案 0 :(得分:1)
domxml-from-native
命令不起作用的原因是因为执行解析的libvirt中的底层代码期望qemu-system-
的后缀为canonical architecture name,{{1} } 不是。在您的情况下,您似乎希望arm
映射到arm
,这是一个规范的架构名称。您可以通过创建指向系统armv7l
的软链接qemu-system-armv7l
,然后使用qemu-system-arm
代码参考
由于多个不相关的原因,您的xml会给您同样的错误。在qemu.args
下的type
元素中,您需要指定os
(或其他一些规范的手臂拱名称)。另请注意,arch="armv7l"
和kernel
引用必须是绝对路径或前缀为dtb
。最后,您需要的某些设备需要PCI总线,并且无法使用您要使用的机器。考虑以下替代方案。
.