这是我发现将参数传递给 qemu 的唯一方法:
<domain type='qemu' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
不幸的是网址http://libvirt.org/schemas/domain/qemu/1.0现在只返回 404 页面,libvirt 会自动修剪掉这部分内容。我似乎找不到任何有关替代方案的信息,因为即使是 libvirt 网站也建议添加这个损坏的模式!
是否有另一种方法可以在没有 qemu 参数的情况下启用 evdev 传递?
编辑:
我使用下面标记的解决方案解决了这个问题,但需要注意的一件重要事情是 virsh 总是会修剪掉xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'
除非<qemu:[whatever]>
域中某处存在有效标签。
答案1
即使命名空间的 URL 是 404,在域配置中使用它也确实有效,并且记录在libvirt
主页:
qemu
此外,以下 XML 添加允许对启动域时给出的命令行进行微调(自 0.8.3 起)。为了使用 XML 添加,有必要发出一个 XML 命名空间请求(特殊xmlns:name
属性)来拉入http://libvirt.org/schemas/domain/qemu/1.0;通常,命名空间的名称为qemu
。命名空间就位后,就可以<qemu:commandline>
在域下添加元素,并根据需要重复以下子元素:
qemu:arg
在启动域时向进程添加一个附加的命令行参数
qemu
,由属性值给出。
qemu:env
qemu
在启动域时为进程添加一个额外的环境变量,给定属性名称和可选值中记录的名称-值对。
这也在以下不同地方进行了测试libvirt
:
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns-no-env.xml
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns-commandline.xml
- https://github.com/libvirt/libvirt/blob/0279a51b83e3711c3766cb9503becab3813dee95/tests/qemuxml2argvdata/qemu-ns.xml
- 和别的
我测试过这个解决方案在 kvm 域上,将定义的开头更改为
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<qemu:commandline>
<qemu:arg value='-unknown'/>
<qemu:arg value='parameter'/>
</qemu:commandline>
在virsh -c qemu:///system edit <domain>
。在后续编辑中,这些更改仍然存在(不过,新元素已移至文档末尾)。
启动域也会失败,并qemu
抱怨未知参数:
↪ virsh -c qemu:///system start <domain>
error: Failed to start domain <domain>
error: Interner Fehler: qemu unexpectedly closed the monitor: qemu-system-x86_64: -unknown: invalid option
请注意,XML 命名空间不需要是解析为某种可用的 URL。