如何在QEMU中添加更多受支持的机器类型?

时间:2019-01-28 01:39:15

标签: qemu libvirt openstack-nova

我在Cloudlab中有一个Openstack Pike部署,它使用的是QEMU版本2.10.1(Debian 1:2.10+dfsg-0ubuntu3.8~cloud1)

我想用this version代替QEMU,以支持通过QMP进行监视。我使用./configure --target-list=x86_64-softmmu配置并编译了二进制文件qemu-system-x86_64,但是当我检查支持的计算机类型时,它缺少原始二进制文件中存在的某些计算机类型:

pc-i440fx-zesty      Ubuntu 17.04 PC (i440FX + PIIX, 1996)
pc-i440fx-yakkety    Ubuntu 16.10 PC (i440FX + PIIX, 1996)
pc-i440fx-xenial     Ubuntu 16.04 PC (i440FX + PIIX, 1996)
pc-i440fx-wily       Ubuntu 15.04 PC (i440FX + PIIX, 1996)
pc-i440fx-trusty     Ubuntu 14.04 PC (i440FX + PIIX, 1996)
ubuntu               Ubuntu 17.10 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-artful)
pc-i440fx-artful     Ubuntu 17.10 PC (i440FX + PIIX, 1996) (default)
pc-i440fx-2.9        Standard PC (i440FX + PIIX, 1996)
pc-q35-zesty         Ubuntu 17.04 PC (Q35 + ICH9, 2009)
pc-q35-yakkety       Ubuntu 16.10 PC (Q35 + ICH9, 2009)
pc-q35-xenial        Ubuntu 16.04 PC (Q35 + ICH9, 2009)
pc-q35-artful        Ubuntu 17.10 PC (Q35 + ICH9, 2009)
pc-q35-2.9           Standard PC (Q35 + ICH9, 2009)

因此,当我尝试使用Openstack部署测试VM时,出现了以下错误:

libvirtError: internal error: process exited while connecting to monitor: 2019-01-24T19:41:51.292121Z qemu-system-x86_64: -enable-kvm: unsupported machine type

当我将机器类型更改为可用的hw_machine_type = x86_64=pc-i440fx-1.6之一时,它给了我这个错误:

libvirtError: internal error: qemu unexpectedly closed the monitor: qemu: could not load PC BIOS 'bios-256k.bin'

因此,在查找错误后,我刚刚创建了符号链接:

sudo ln -sf /usr/share/seabios/bios-256k.bin /usr/share/qemu/bios.bin

但是随后出现以下错误:

libvirtError: internal error: qemu unexpectedly closed the monitor: Could not open option rom 'kvmvapic.bin': No such file or directory

所以我想也许我应该只使用原始机器类型,并且我想知道在构建QEMU时如何添加更多受支持的机器类型?我想它一定是配置选项之一,但我找不到它。

1 个答案:

答案 0 :(得分:0)

添加新机器类型是通过在构建QEMU源代码时对其进行修改。您可能会从计算机名称中猜到,这些特定于Ubuntu QEMU版本,因此它们将通过Ubuntu QEMU软件包中的修补程序添加。这些机器基本上就像上游的pc-i440fx-n.n和pc-q32-n.n一样,但是将设置属性,使其行为“类似于此版本的Ubuntu中附带的QEMU版本”。这对于迁移虚拟机时的兼容性很重要。它可能也有一些细微的差别,例如它所查找的BIOS blob文件名:Ubuntu / Debian可能还修补了QEMU以编辑诸如搜索BIOS blob的目录之类的内容。

您链接到的另一个QEMU版本基于上游QEMU,因此它没有那些启用Ubuntu特定计算机类型的特定于Ubuntu的修补程序。 (它也是基于旧版本的QEMU的,因此将缺少该版本之后发现的安全问题的各种修复程序,因此请谨慎!检查2.8.1到现在之间的任何未修补的安全问题对于您的用例是否重要)

您可以向前按以尝试调整计算机配置以与非Ubuntu机器类型一起使用。 (使用它拥有的最新pc-i440fx-nn,它的1.6很老了,应该是2.8。)或者,您也可以尝试对添加了QMP监视功能的补丁进行基础设置,以便将它们应用于Ubuntu。 QEMU来源。对于任何与生产类似的东西,我认为后者可能是可行的方法,因为使用某人的随机开发树没有安全​​性固定问题,但这可能并不容易。