将 libvirt xml 转换为 qemu 命令行

将 libvirt xml 转换为 qemu 命令行

我使用 virt-manager 创建了一个虚拟机,我可以使用 virsh edit 编辑该 xml,但我想问您是否有方法将 libvirt xml 转换为 qemu 命令行。我发现不久前也有人提出了同样的问题:

https://www.reddit.com/r/VFIO/comments/dh9iyo/convert_libvirt_xml_into_qemu_command_line_and/

用户 jkhsjdhjs 说:

要将 libvirt xml 转换为 qemu 命令行,您只需使用 libvirt 启动虚拟机即可。 libvirt 将使用大量命令行参数启动 qemu 进程,然后您可以保存这些参数。由于 libvirt 只是启动一个 qemu 进程,因此它们应该执行完全相同的操作。

好吧,但是怎么样?我想了解如何使用 libvirt 启动虚拟机,以便我可以看到 qemu 命令中包含的每个选项。

我尝试过:

virsh dumpxml win10

virsh domxml-to-native qemu-argv win10.xml

error: internal error: invalid PCI passthrough type 'default'

答案1

由于问题询问如何qemu从 生成命令行virsh,因此人们可能只查看 VM(域)启动后运行的进程。然而,为了更正确地回答这个问题,这可能是正确的命令:

virsh domxml-to-native

这是因为domxml-to-native qemu-argv --domain [name_of_vm]不会启动虚拟机,而只会创建一个命令行来执行此操作。作为维尔什手册页说:

domxml-to-native format { [--xml] xml | --domain domain-name-or-id-or-uuid }

转换文件XML转换为域 XML 格式或转换现有的- 领域到由 format 命名的本机来宾配置格式。这XML- 领域论据是相互排斥的。对于以下类型格式论证,参考domxml-from-native

答案2

查看该来宾的 QEMU 日志文件。这些日志文件位于主机上的文件夹中/var/log/libvirt/qemu/DomainName

可以看到执行的/usr/bin/qemu-system-x86_64...日志中的命令。

答案3

一种方法是让您的计算机在 VirtManager 中运行,然后转到终端窗口并使用 ps 命令列出所有进程: ps -fAps -fA | cat。 (cat将使长字符串在控制台中换行)。然后你可以找到盖姆处理并提取 VirtManager 发出的命令文本,因为它只是调用 qemu 来运行机器。

相关内容