libvirt:如何传递 qemu 命令行参数,现在 libvirt 架构为 404

libvirt:如何传递 qemu 命令行参数,现在 libvirt 架构为 404

这是我发现将参数传递给 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

我测试过这个解决方案在 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

相关内容