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

如何在windows中模拟arm64安卓系统

quem efi:

https://releases.linaro.org/reference-platform/enterprise/17.12/uefi/release/qemu-aarch64/QEMU_EFI.fd

安卓 iso:

https://developers.google.cn/android/images?hl=zh-cn#crosshatch

quem

pacman 所需的msys2 安装

https://www.qemu.org/download/#windows

For 64 bit Windows 8.1 or above (in UCRT64):

pacman -S mingw-w64-ucrt-x86_64-qemu
qemu-img --version
qemu-img version 8.2.0
Copyright (c) 2003-2023 Fabrice Bellard and the QEMU Project developers

qemu-system-aarch64

虚拟机磁盘格式转换qemu-img

比较常用的工具就是qemu-img

下载

https://qemu.weilnetz.de/w64/

命令

将qcow2转换为vmdk:
qemu-img convert -p -f qcow2 -O vmdk disk1.qcow2 disk1.vmdk

上述命令中各参数对应的说明如下:

-p:表示镜像转换的进度。
-f后面为源镜像格式。
-O(必须是大写)后面的参数由如下3个部分组成:转换出来的镜像格式 + 源镜像文件名称 + 目标文件名称。
转换完成后,目标文件会出现在源镜像文件所在的目录下。