【QEMU中文文档】1.3 弃用功能

本文由 AI 翻译(ChatGPT-4)完成,并由作者进行人工校对。如有任何问题或建议,欢迎联系我。联系方式:jelin-sh@outlook.com

原文:Deprecated features — QEMU documentation

通常情况下,一旦某个功能引入到 QEMU 中,就计划无限期地支持它。如果需要移除某个功能,将会在本节中列出。该功能将在被弃用的发布版本和下一个发布版本中保持功能性。在这两个版本之后,该功能可能会被移除。被弃用的功能在 QEMU 启动时也可能会在控制台上生成警告,或者在通过监视器命令激活时生成警告,但这不是强制要求。

在 2.10.0 版本发布之前,没有关于功能在被移除之前会被弃用多长时间的官方政策,也没有记录哪些功能已被弃用的文档列表。因此,在 2.10.0 版本之前弃用的任何功能将被视为它们是在 2.10.0 版本中首次被弃用。

以下是当前标记为弃用的所有功能列表。

系统仿真器命令行参数

短形布尔选项(自 6.0 版起)

布尔选项(例如 share=on / share=off)可以简写为 share 和 noshare。现在已被弃用,并将引发警告。

delay 套接字字符设备选项(自 6.0 版起)

nodelay 的短格式布尔选项的替代形式是 nodelay=on,而不是 delay=off。

插件参数通过 arg=<string>传递(自 6.1 版起)

通过 arg= 传递 TCG 插件参数是多余的,会使命令行变得不易读,特别是当参数本身包含名称和值时,例如 -plugin plugin_name,arg="arg_name=arg_value"。因此,使用 arg 是多余的。单词参数被视为短形式布尔值,并传递给插件作为 arg_name=on。然而,短形式布尔值已被弃用,更倾向于完全显式的 arg_name=on 形式。

-smp (不支持“parameter=1” SMP 配置)(自 9.0 起)

指定的 CPU 拓扑参数必须得到机器的支持。在 SMP 配置中,用户应提供目标机器支持的 CPU 拓扑参数。然而,历史上允许用户将不支持的拓扑参数指定为“1”,这是没有意义的。因此,对这种配置(例如,对于 x86 PC 机器的 -smp drawers=1, books=1, clusters=1)的支持自 9.0 版本以来已被标记为不推荐使用。用户必须确保所有使用 -smp 描述的拓扑成员都受到目标机器的支持。

-runas (自 9.1 版起)

请使用-run-with user=..替代。

用户模式仿真器命令行参数

-p (自 9.0 版起)

-p 选项假装控制主机页面大小。但是,无法更改主机页面大小,仅使用该选项会导致失败。

QEMU 机器协议(QMP)命令

blockdev-open-tray 和 blockdev-close-tray 参数 device(自 2.8 版起)

请使用参数 id。

eject 参数 device(自 2.8 版起)

请使用参数 id。

blockdev-change-medium 参数 device(自 2.8 版起)

请使用参数 id。

block_set_io_throttle 参数 device(自 2.8 版起)

请使用参数 id。

blockdev-add 空字符串参数 backing(自 2.10 版起)

请使用参数值 null。

block-commit 参数 base 和 top(自 3.1 版起)

请使用参数 base-node 和 top-node。

nbd-server-add 和 nbd-server-remove(自 5.2 版本起)

使用更通用的命令 block-export-add 和 block-export-del。作为此弃用的一部分,当 nbd-server-add 使用单个 bitmap 时,新的 block-export-add 使用 bitmaps 列表。

query-qmp-schema 返回值成员 values(自 6.2 版本起)

返回值元素中的成员 values 与元类型 enum 已被弃用。请改用 members。

drive-backup(自 6.2 版起)

使用 blockdev-backup 与 blockdev-add 结合使用。这种变化主要是将备份目标的创建/打开过程与显式的、分开的步骤分开。blockdev-backup 主要使用与 drive-backup 相同的参数,但 format 和 mode 选项被移除,而使用显式的 blockdev-create 和 blockdev-add 调用。有关详细信息,请参阅实时块设备操作。

参数错误地输入 device_add(自 6.2 版本起)

由于 device_add 的内部实现存在缺陷,QEMU 错误地接受某些无效参数:任何对象或列表参数都会被静默忽略。其他参数类型不会被检查,但会发生隐式转换,因此,例如字符串值可以分配给整数设备属性,反之亦然。

这是 QEMU 中的一个错误,将来会修复,以便先前接受的不正确命令将返回错误。用户应确保传递给 device_add 的所有参数与文档化的属性类型一致。

QEMU 机器协议(QMP)事件

MEM_UNPLUG_ERROR(自 6.2 版起)

请使用更通用的事件 DEVICE_UNPLUG_GUEST_ERROR。

vCPU 跟踪事件(自 8.1 版起)

在 7.0 版本中删除了使用 vCPU 感知跟踪点来检测 QEMU 辅助函数的能力。然而,QMP 仍然暴露了 vcpu 参数。现在已弃用此参数,并且仅通过名称选择使用剩余的跟踪点。

主机架构

BE MIPS(自 7.2 版起)

随着 Debian 10(“Buster”)进入 LTS 阶段,大端 32 位 MIPS 版本不再受支持,这使得我们难以维护该架构的交叉编译 CI 测试。由于不再有 CI 覆盖支持,可能在弃用过程完成之前就会出现位腐败。MIPS 的小端变体(32 位和 64 位)仍然是受支持的主机架构。

32 位 x86 主机上的系统仿真(自 8.0 版起)

对于 32 位 x86 主机的支持在主流操作系统发行版中变得越来越不常见,因为 64 位 x86 硬件的普遍可用性。QEMU 项目不再认为为系统仿真提供 32 位 x86 支持是其有限资源的有效利用,因此打算停止支持。自过去 10 年以来,所有最近的 x86 硬件都能够支持 64 位 x86 扩展,应该使用相应的 64 位操作系统。

系统仿真器 CPU

power5+ 和 power7+ CPU 名称(自 9.0 版起)

设备(包括 CPU)名称中的字符“+”不再允许在 QEMU 对象模型中。power5+,power5+_v2.1,power7+ 和 power7+_v2.1 目前仍通过别名支持,但为了一致性,这些将在未来的版本中被移除。请改用 power5p_v2.1 和 power7p_v2.1。

Sun-UltraSparc-IIIi+ 和 Sun-UltraSparc-IV+ CPU 名称(自 9.1 版起)

设备(包括 CPU)名称中的字符“+”不再允许在 QEMU 对象模型中。Sun-UltraSparc-IIIi+ 和 Sun-UltraSparc-IV+ 目前仍然通过变通方法支持,但为了一致性,这些将在未来的版本中被移除。请改用 Sun-UltraSparc-IIIi-plus 和 Sun-UltraSparc-IV-plus。

CRIS CPU 架构(自 9.0 版本起)

CRIS 架构已从 Linux 中移除,编译器不再打包在任何发行版中,这使得运行 check-tcg 测试变得更加困难。除非我们能改善测试情况,否则代码可能会因为没有人注意到而变得陈旧。

系统仿真机器

Arm virt 机器 dtb-kaslr-seed 属性(自 7.1 版本起)

virt 板上的 dtb-kaslr-seed 属性已被弃用,请使用新名称 dtb-randomness。新名称更好地反映了此属性影响设备树 blob 中所有随机数据的方式,而不仅仅是 kaslr-seed 节点。

pc-i440fx-2.0 到 pc-i440fx-2.3(自 8.2 版本起)

这些老的机器类型如今相当被忽视,因此在进行实时迁移时可能存在各种缺陷。请使用更新的机器类型。

shix(自 9.0 版起)

该机器已不复存在,并且在 QEMU 中长期未得到维护。这也适用于它使用的 TC51828 16MiB 闪存。

pseries-2.1 到 pseries-2.12(自 9.0 版本起)

旧的 pseries 机器在版本 3.0 之前经历了许多变化来纠正问题,主要涉及迁移兼容性。这些已不再维护,移除它们将使代码更易阅读和维护。请使用版本 3.0 及以上版本作为替代。

Arm 机器(akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex, z2)(自 9.0 版本起)

QEMU 包括一些机型的模型,其中 QEMU 代码模拟它们的 SoC 非常古老且未维护。这些代码现在阻碍了我们在整个代码库中推进各种变化的能力,多年来没有人对尝试现代化它们感兴趣。我们不指望这些机器中有大量用户,因为它们都在模拟已经成为历史的硬件。因此,我们正在放弃支持使用 PXA2xx 和 OMAP2 SoC 的所有机型。我们还放弃了 cheetah OMAP1 板,因为我们没有任何测试镜像,也不知道有谁有;sx1 和 sx1-v1 OMAP1 机器目前仍受支持。

PPC 405 ref405ep 机器(自 9.1 版起)

ref405ep 机器和 PPC 405 CPU 没有已知用户,固件映像不可用,OpenWRT 在 2019 年停止支持,U-Boot 在 2017 年停止支持,Linux 也将在 2024 年停止支持。是时候放弃这种古老的硬件,专注于更新的 CPU 和平台了。

后端选项

使用非持久性后备文件与 pmem=on(自 6.1 版起)

此选项用于当 memory-backend-file 被模拟的 NVDIMM 设备消耗时。然而,启用 memory-backend-file.pmem 选项时,当备份文件不支持 DAX 或不在支持持久内存直接映射的文件系统上时,是不安全的,可能会导致主机崩溃时数据丢失或损坏。选项包括:

  • 修改 VM 配置以将 pmem=off 设置为继续使用虚拟 NVDIMM(没有持久性保证),并将支持文件存储在非 DAX 存储上。
  • 将备份文件移动到 NVDIMM 存储并保留 pmem=on (以确保 NVDIMM 具有持久性保证)。

设备选项

模拟设备选项

-device virtio-blk,scsi=on|off(自 5.0 版本起)

virtio-blk SCSI 透传功能是一项传统的 VIRTIO 功能。VIRTIO 1.0 及更高版本不支持它,因为 virtio-scsi 设备是为了完全支持 SCSI 而引入的。在需要 SCSI 透传时,请改用 virtio-scsi。

请注意,这也适用于 -device virtio-blk-pci,scsi=on|off,这是一个别名。

-device nvme-ns,eui64-default=on|off(自 7.1 版起)

在 QEMU 版本 6.1、6.2 和 7.0 中,nvme-ns 生成的 EUI-64 标识符不是全局唯一的。如果需要 EUI-64 标识符,则用户必须使用 nvme-ns 设备参数 eui64 明确设置它。

-device nvme,use-intel-id=on|off(自 7.1 版起)

nvme 设备最初使用了来自英特尔的 PCI 供应商/设备标识符组合,但未正确分配。自版本 5.2 以来,控制器已使用了正确分配的标识符。弃用 use-intel-id 机器兼容性参数。

-device cxl-type3,memdev=xxxx(自 8.0 版起)

cxl-type3 设备最初只使用单个内存后端。随着对易失性内存支持的增加,现在有必要区分持久性和易失性内存后端。因此,memdev 已被弃用,支持 persistent-memdev。

-fsdev proxy 和 -virtfs proxy(自 8.1 版起)

9p proxy 文件系统后端驱动程序已被弃用,并将在未来的 QEMU 版本中删除(以及其代理帮助守护程序)。请使用 -fsdev local-virtfs local 来使用 9p local 文件系统后端,或者考虑使用 virtiofsd。

9p proxy 后端最初是作为 9p local 后端的替代品开发的。其想法是通过将实际的低级文件系统操作从 9p 服务器(QEMU 进程)分派到一个单独的进程(virtfs-proxy-helper 二进制文件)来增强安全性。然而,这种替代方案从未获得动力。代理后端比本地后端慢得多,多年来没有任何发展,并且显示出安全性较差,特别是由于其辅助守护程序必须以 root 用户身份运行,而本地后端通常以非特权用户身份运行 QEMU,并允许通过使用其“映射”安全模型选项来收紧行为。

RISC-V“任何”CPU 类型 -cpu any(自 8.2 版起)

“any” CPU 类型是在 2018 年引入的,并自最初的 RISC-V QEMU 端口以来一直存在。它的使用一直不清楚:用户不知道从名为“any”的 CPU 可以期待什么,实际上,该 CPU 并没有做任何默认 CPU rv32/rv64 尚未完成的特殊操作。

在引入“max” CPU 类型之后,RISC-V 现在具有对通用 CPU 的良好覆盖范围:rv32 和 rv64 作为默认 CPU,以及“max” 作为完整功能 CPU,适用于 32 位和 64 位构建。从 8.2 开始,用户被劝阻使用“any” CPU 类型。

RISC-V CPU 属性以大写字母“Z”开头(自 8.2 版起)

所有以大写字母“Z”开头的 RISC-V CPU 属性将从 8.2 版本开始被弃用。原因是它们在过去被错误地以大写字母“Z”添加。后来 CPU 属性以小写名称添加,这是我们从现在开始要使用的格式。

尝试使用这些已弃用属性的用户将收到警告,建议切换到它们的稳定对应项:

  • “Zifencei” 应该替换为 “zifencei”
  • “Zicsr” 应该替换为 “zicsr”
  • “Zihintntl” 应该替换为 “zihintntl”
  • “Zihintpause” 应该替换为 “zihintpause”
  • “Zawrs” 应该替换为 “zawrs”
  • “Zfa” 应该替换为 “zfa”
  • “Zfh” 应该替换为 “zfh”
  • “Zfhmin” 应该替换为 “zfhmin”
  • “Zve32f” 应该替换为 “zve32f”
  • “Zve64f” 应该替换为 “zve64f”
  • “Zve64d” 应该替换为 “zve64d”

块设备选项

“backing”: “”(自 2.12 版起)

为了防止 QEMU 自动打开镜像的后备链,请使用 “backing”: null。

rbd 键值对编码的文件名:“”(自 3.1 版起)

rbd 的选项应根据其运行时选项进行指定,就像其他块驱动程序一样。对键值对编码的文件名进行传统解析对于打开具有旧格式的后备文件的图像是有用的;这些图像文件应更新为使用当前格式。

遗留编码示例:

json:{"file.driver":"rbd", "file.filename":"rbd:rbd/name"}

以上内容已转换为当前支持的格式:

json:{"file.driver":"rbd", "file.pool":"rbd", "file.image":"name"}

iscsi,password=xxx(自 8.0 版起)

在命令行中以明文指定 iSCSI 密码使用 password 选项是不安全的。应该使用 password-secret 选项,而不是引用通过文件或加密提供密码的 --object secret… 实例。

字符设备选项

后端 memory(自 9.0 版起)

memory 是 ringbuf 的弃用同义词。

CPU 设备属性

x86 上的 pcommit(自 9.1 版起)

PCOMMIT 指令从未包含在任何物理处理器中。在 QEMU 9.0 之前的 TCG 中,它被实现为一个无操作指令,但仅限于 -cpu max(这并不保证跨版本迁移兼容性)。

RISC-V CPU 上的计数器属性(自 8.2 版本起)

为了支持更灵活的计数器配置,这已被替换为一个 pmu-mask 属性。如果计数器集是连续的,那么掩码可以用 ((2 ^ n) - 1) << 3 计算。最不重要的三位必须保持清晰。

向后兼容

CPU 模型的可运行性保证(自 4.1 版起)

以前的 QEMU 版本从未以引入额外的主机软件或硬件要求到虚拟机的方式更改现有的 CPU 模型。这使得管理软件可以安全地更改现有虚拟机的机器类型,而不会引入新的要求(“可运行性保证”)。这阻止了 CPU 模型的更新,以包括 CPU 漏洞缓解措施,使得默认配置下的客户端容易受到攻击。

CPU 型号的可运行性保证将不再适用于现有的 CPU 型号。需要可运行性保证的管理软件必须使用 query-cpu-definitions QMP 命令返回的 alias-of 字段来解析 CPU 型号别名。

尽管这些保证得以保持,query-cpu-definitions 的返回值将使现有的 CPU 型号别名指向一个不会破坏可运行性保证的版本(具体来说,这些 CPU 型号的第 1 个版本)。在未来的 QEMU 版本中,别名将根据机器类型指向更新的 CPU 型号版本,因此管理软件必须在启动虚拟机之前解析 CPU 型号别名。

QEMU 客户机代理

–blacklist 命令行选项(自 7.2 版起)

–blacklist 已被 --block-rpcs 替换(这是对此选项功能更好的措辞)。简写形式 -b 仍然保持不变,因此是应该在旧版和未来版本的 QEMU 上运行的脚本的首选方式。

blacklist 配置文件选项(自 7.2 版起)

blacklist 配置文件选项已更名为 block-rpcs(以与相应命令行选项的更名同步)。

迁移

fd: 用于文件迁移时的 URI(自 9.1 版起)

fd: URI 目前可以提供引用套接字或普通文件的文件描述符。这是两种不同类型的迁移。为了减少歧义,fd: URI 使用提供文件描述符给普通文件已被弃用,而是明确使用 file: URI,文件描述符作为 fdset 传递。有关 fdset 使用详细信息,请参考 add-fd 命令文档。


© Copyright 2024, The QEMU Project Developers. This documentation is for QEMU version 9.0.50.

  • 16
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jelin大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值