在定义 libvirt 域时,如何找到模拟器支持的架构以供使用?

在定义 libvirt 域时,如何找到模拟器支持的架构以供使用?

使用 XML 创建 libvirt 客户机时,如何确定哪些“arch”值有效<domain><os><type arch=?>?问题是,例如,arm是无效的,必须改为armv7l。人们应该如何知道这一点?

文档说:

还有两个可选属性,arch 指定要虚拟化的 CPU 架构,machine 指代机器类型。Capabilities XML 提供了这些属性允许值的详细信息。

当我使用 virsh 命令行或 Python API 时,如果不提供架构,则无法获取功能。例如:

connection.getDomainCapabilities('/usr/bin/qemu-system-arm')
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/.../libvirt.py", line 4573, in getDomainCapabilities
    raise libvirtError('virConnectGetDomainCapabilities() failed')
libvirt.libvirtError: invalid argument: architecture from emulator 'armv7l' doesn't match given architecture 'x86_64'

等效的 virsh 命令也给出了类似的错误。那么我如何知道哪些架构可以作为参数发送给 getDomainCapabilities?

另外:更令人困惑的是,virt-manager 列出了与内部表示不匹配的体系结构。例如,当我创建一台 arm 机器时,生成的 XML 会列出 armv7l。

答案1

输出virsh capabilities将显示 libvirt 能够通过查找qemu-system-xxxx$PATH 中的二进制文件检测到的所有模拟器体系结构。如果您没有看到该输出中列出的预期体系结构,则您qemu-system-xxx的安装中可能缺少二进制文件,或者您的操作系统供应商不支持这些体系结构。

相关内容