QEMU 机器类型和兼容性【翻译】
如果您想要将最初在较旧的 QEMU 版本上启动的来宾迁移到较新版本的 QEMU,您需要确保两台机器实际上彼此兼容。一旦排除了根本无法迁移的设备之类的东西,并确保两个 QEMU 调用实际上创建了相同的虚拟硬件,这基本上可以归结为使用兼容的机器。
版本化机器类型
如果你只是想创建一台机器而不考虑迁移兼容性,你通常会这样做
qemu-system-ppc64 -machine pseries (...)
这将创建一个这种pseries
类型的机器。但在本例中,pseries
实际上是该机器类型的最新版本的别名;对于 6.2,这将是pseries-6.2
. 您可以通过以下方式找出哪些机器类型已版本化(以及给定二进制文件实际存在哪些机器类型)-machine ?
:
$ qemu-system-ppc64 -machine ?
Supported machines are:
40p IBM RS/6000 7020 (40p)
bamboo bamboo
g3beige Heathrow based PowerMAC
mac99 Mac99 based PowerMAC
mpc8544ds mpc8544ds
none empty machine
pegasos2 Genesi/bPlan Pegasos II
powernv10 IBM PowerNV (Non-Virtualized) POWER10
powernv8 IBM PowerNV (Non-Virtualized) POWER8
powernv IBM PowerNV (Non-Virtualized) POWER9 (alias of powernv9)
powernv9 IBM PowerNV (Non-Virtualized) POWER9
ppce500 generic paravirt e500 platform
pseries-2.1 pSeries Logical Partition (PAPR compliant)
pseries-2.10 pSeries Logical Partition (PAPR compliant)
pseries-2.11 pSeries Logical Partition (PAPR compliant)
pseries-2.12 pSeries Logical Partition (PAPR compliant)
pseries-2.12-sxxm pSeries Logical Partition (PAPR compliant)
pseries-2.2 pSeries Logical Partition (PAPR compliant)
pseries-2.3 pSeries Logical Partition (PAPR compliant)
pseries-2.4 pSeries Logical Partition (PAPR compliant)
pseries-2.5 pSeries Logical Partition (PAPR compliant)
pseries-2.6 pSeries Logical Partition (PAPR compliant)
pseries-2.7 pSeries Logical Partition (PAPR compliant)
pseries-2.8 pSeries Logical Partition (PAPR compliant)
pseries-2.9 pSeries Logical Partition (PAPR compliant)
pseries-3.0 pSeries Logical Partition (PAPR compliant)
pseries-3.1 pSeries Logical Partition (PAPR compliant)
pseries-4.0 pSeries Logical Partition (PAPR compliant)
pseries-4.1 pSeries Logical Partition (PAPR compliant)
pseries-4.2 pSeries Logical Partition (PAPR compliant)
pseries-5.0 pSeries Logical Partition (PAPR compliant)
pseries-5.1 pSeries Logical Partition (PAPR compliant)
pseries-5.2 pSeries Logical Partition (PAPR compliant)
pseries-6.0 pSeries Logical Partition (PAPR compliant)
pseries-6.1 pSeries Logical Partition (PAPR compliant)
pseries pSeries Logical Partition (PAPR compliant) (alias of pseries-6.2)
pseries-6.2 pSeries Logical Partition (PAPR compliant) (default)
ref405ep ref405ep
sam460ex aCube Sam460ex
taihu taihu
virtex-ml507 Xilinx Virtex ML507 reference design
pseries-x.y
如您所见,旧版本有多种机器类型;这些旨在提供与使用较旧的 QEMU 版本创建的默认机器兼容的配置。例如,如果您想要迁移在pseries
使用 QEMU 5.1 创建的计算机上运行的来宾,则接收 QEMU 需要启动
qemu-system-ppc64 -machine pseries-5.1 (...)
支持的机器类型
注意:以下内容适用于上游 QEMU。发行版可能在其构建中支持不同版本的机器类型。
此列表自 QEMU 6.2 起;将来可能会添加新版本的机器类型,有时旧版本的机器类型会被弃用和删除。下一个 QEMU 版本的机器类型通常在发布周期的早期引入(至少,这是目标......)
arm,aarch64
该virt
机器类型支持 2.6 以后的版本。
m68k
该virt
机器类型支持 6.0 以后的版本。
ppc64
该pseries
机器类型支持 2.1 之后的版本。
s390x
该s390-ccw-virtio
机器类型支持 2.4 以后的版本。
i386、x86_64
机器pc-i440fx
类型支持1.4以后的版本(以前还有更老的版本,但是已经被删除了),而pc-q35
机器类型支持2.4以后的版本。
这里还需要考虑另一件事:pc
机器类型别名(从 QEMU 6.2 开始)指向最新的pc-i440fx
机器类型;如果您想要最新的
pc-q35
机器类型,则必须使用q35
.
如何使用这个
如果您只想启动 QEMU 实例并再次关闭它,而不希望将其迁移到任何地方,则可以坚持使用默认机器类型。但是,如果您以后可能想要迁移机器,那么明确指定版本化机器类型可能是个好主意,这样您就不必记住启动时使用的 QEMU 版本。
或者直接使用libvirt之类的管理软件,它会自动帮你把机器类型扩展到最新版本,以后就不用担心了。
兼容机种的使用部分就到此结束;后续文章将介绍如何实际实施。
ref:https://people.redhat.com/~cohuck/2022/01/05/qemu-machine-types.html